我正在使用glutin,所以我的程序的主循环有一个移动关闭,我正在尝试使用rodio板条箱播放音频文件。使用以下代码,一切正常,每次程序循环时我都会发出一声哔哔声:
...
let sink: rodio::Sink = ...;
event_loop.run(move |event, _, control_flow | {
let sound_file = File::open("beep.ogg").unwrap();
let buf_wrap = BufReader::new(sound_file);
let source = rodio::Decoder::new(buf_wrap).unwrap();
sink.append(source);
...
});
...
Run Code Online (Sandbox Code Playgroud)
但是,这非常慢,因为我每次循环时都打开同一个文件,所以我尝试使用以下方法修复它:
...
let sound_file = File::open("beep.ogg").unwrap();
event_loop.run(move |event, _, control_flow | {
let buf_wrap = BufReader::new(sound_file);
...
});
...
Run Code Online (Sandbox Code Playgroud)
但是现在编译器给了我以下错误信息:
error[E0507]: cannot move out of `sound_file`, a captured variable in an `FnMut` closure
--> src/lib.rs:86:33
|
83 | let sound_file = File::open("beep.ogg").unwrap();
| ---------- captured outer variable …Run Code Online (Sandbox Code Playgroud)