내부 역 참조 폐쇄를 실행 내가 기능을 한 다음을 반복하는 벡터를 받아 각 단계에서 각각을 실행하는 몇 가지 코드가 있습니다. 나는이 함수 호출이 첫 번째 블록 두번째 등이있는의 비동기 대신 수행 할 수 있도록 작업없이 ... for 루프로 작업을 통합 할녹 : 작업
let mut arr: Vec<|i32| -> i32> = Vec::new();
arr.push(function1);
arr.push(function2);
let ref num_in = os::args()[1];
let num_str = num_in.to_string();
let num = match from_str::<i32>(num_str.as_slice()) {
Some(x) => x,
None => panic!("Not a number"),
};
for f in arr.iter_mut() {
spawn(proc(){
println!("{}", (*f)(num.clone()));
});
};
을 시도, 단순히를하고있는 중이 야 println!
for 루프 내에서이 코드는 잘 실행되지만 차단 방법으로 작업을 사용하여 피하려고합니다. 작업과 나는 이러한 오류 및 메모 ...
error: the trait 'core::kinds::Send' is not implemented for the type '&mut |i32| -> i32'
note: the closure that captures 'f' requires that all captured variables implement the trait 'core::kinds::Send'
첫 번째 줄을 'let mut arr : Vec i32> = Vec :: new();'으로 변경 했으므로 이제 오류가 발생합니다 : '오류 :'arr '이 충분하지 않습니다.' –
AllTheTime
@ AllTheTime : 완전한 예를 제공해주십시오. 언급하는 것을 잊어 버렸습니다. 벡터 반복자는 참조를 산출합니다. – sellibitze