【发布时间】:2020-02-29 11:02:28
【问题描述】:
fn main() {
let a = String::from("foo");
let f = || &a;
fn_immut(f);
println!("{}", a);
}
fn fn_immut<F>(f: F)
where F: Fn() -> &String
{
println!("calling Fn closure from fn, {}", f());
}
这段代码无法编译,rustc 告诉我应该像这样添加一个'static:
fn fn_immut<F>(f: F)
where F: Fn() -> &'static String
我试过了,但还是不行。而rustc 还告诉我“这个函数的返回类型包含一个借来的值,但没有可以借用的值”。
我的问题是:在这段代码中,闭包已经在其范围内捕获了变量a 的引用,为什么 rustc 仍然告诉我“它没有借用的价值”?
【问题讨论】:
标签: rust