這是關於此問題的簡短示例。如何使關閉類型'extern「C」fn「
#[fixed_stack_segment]
fn test(func: extern "C" fn() -> ~str) -> ~str {
func()
}
extern "C" fn func1() -> ~str {
~"hello"
}
fn main() {
let func2 = || -> ~str { ~"world" };
println(test(func1));
println(test(func2));
}
然後,rustc停止並出錯。
st.rs:13:17: 13:22 error: mismatched types: expected `extern "C" fn() -> ~str` but found `&fn<no-bounds>() -> ~str` (expected extern fn but found fn)
st.rs:13 println(test(func2));
我找不到讓lambda成爲extern fn的方法。
我該怎麼辦?
我不認爲你可以,因爲閉包意味着捕獲環境,而外部函數沒有任何環境。但我不確定,讓我們等待更權威的答案。 –