Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust Can';是否返回引用? fn main(){ 设a=String::from(“foo”); 设f=|&a; fn_免疫(f); println!(“{}”,a); } fn fn_免疫(f:f) 其中F:Fn()->&String { println!(“从Fn,{},f()调用Fn闭包); }_Rust - Fatal编程技术网

Rust Can';是否返回引用? fn main(){ 设a=String::from(“foo”); 设f=|&a; fn_免疫(f); println!(“{}”,a); } fn fn_免疫(f:f) 其中F:Fn()->&String { println!(“从Fn,{},f()调用Fn闭包); }

Rust Can';是否返回引用? fn main(){ 设a=String::from(“foo”); 设f=|&a; fn_免疫(f); println!(“{}”,a); } fn fn_免疫(f:f) 其中F:Fn()->&String { println!(“从Fn,{},f()调用Fn闭包); },rust,Rust,这段代码无法编译,rustc告诉我应该像这样添加一个'static: fn-fn\u免疫(f:f) 其中F:Fn()->&'静态字符串 我试过了,但还是不行。而且rustc还告诉我“这个函数的返回类型包含一个借来的值,但没有可借来的值” 我的问题是:在这段代码中,闭包已经在它的作用域中捕获了变量a的引用,为什么rustc仍然告诉我“它没有可借来的值”编译器的关键消息确实是,对于返回字符串的闭包,缺少生命周期说明符。由于traitFn()->&String定义的签名没有任何函数参数,因此编译器无

这段代码无法编译,
rustc
告诉我应该像这样添加一个
'static

fn-fn\u免疫(f:f)
其中F:Fn()->&'静态字符串
我试过了,但还是不行。而且
rustc
还告诉我“这个函数的返回类型包含一个借来的值,但没有可借来的值”


我的问题是:在这段代码中,闭包已经在它的作用域中捕获了变量
a
的引用,为什么rustc仍然告诉我“它没有可借来的值”

编译器的关键消息确实是,对于返回字符串的闭包,缺少生命周期说明符。由于trait
Fn()->&String
定义的签名没有任何函数参数,因此编译器无法从中推断返回引用的生存期

错误[E0106]:缺少生存期说明符
-->src/main.rs:10:16
|
10 | F:Fn()->字符串,
帮助:考虑给它一个“静态生命:”和“静态”
|
=帮助:此函数的返回类型包含借用值,但没有可供借用的值
在这里添加
“static
无助于解决问题,因为实际上返回的字符串没有那个生存期。需要在
fn_immut
中引入一个新的生存期参数,从该参数可以传输到
F
的约束

fn fn_immut<'a, F>(f: F)
where
    F: Fn() -> &'a String,