2
struct Level{
i_vec: ~[int]
}
pub struct GameManager{
lvl: Level
}
impl GameManager {
pub fn new() -> GameManager{
GameManager {lvl: Level{i_vec: ~[]}}
}
pub fn new_game(f: ~fn()) {
do spawn {
f();
}
}
pub fn default_game_loop(lvl: &Level ,f: &fn()){
loop {
f();
break;
}
}
}
fn main() {
let mut gm = GameManager::new();
do GameManager::new_game(){
// I know I could move "gm" here, but I would like
// to know how to capture mutable variables.
do GameManager::default_game_loop(&gm.lvl){
}
}
}
/*
/home/maik/source/test.rs:28:43: 28:45 error: mutable variables cannot be implicitly captured
/home/maik/source/test.rs:28 do GameManager::default_game_loop(&gm.lvl){
^~
error: aborting due to previous error
[Finished in 0.2s with exit code 101]
*/
가변 변수를 어떻게 캡처합니까?가변 변수를 어떻게 캡처합니까?
는 또한 이러한 기능의 방법을 만들려고하지만
do gm.default_game_loop(){
let level = &gm.lvl;
}
내가 사용할 수있는 자체 매개 변수가 거기에 같은 폐쇄에 자신을 이동하려고하기 때문에 다음 모든 파산? gm 자체가 클로저와 같이 사용할 수 있어야합니다.
do gm.default_game_loop(){
let level = self.lvl;
}