gpt4 book ai didi

rust - 一个独立的闭包是否可以使用 `&str` 并返回具有相同生命周期的 `&str`?

转载 作者:行者123 更新时间:2023-12-04 13:28:06 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to declare a lifetime for a closure argument?

(3 个回答)


7 个月前关闭。




代码:

fn main() {
let f = |str: &str| str.trim();
println!("{}", f(" foo bar "));
}
错误:
error: lifetime may not live long enough
--> src/main.rs:2:25
|
2 | let f = |str: &str| str.trim();
| - - ^^^^^^^^^^ returning this value requires that `'1` must outlive `'2`
| | |
| | return type of closure is &'2 str
| let's call the lifetime of this reference `'1`
Playground
如果用作函数的参数,则相同的闭包也有效,例如 vec.iter().map(|str| str.trim()) .
是否可以像我的代码一样使用独立闭包 &str并返回 &str拥有相同的生命?

最佳答案

不确定为什么推理失败,但由于某种原因,借用检查器处理闭包上的注释与 fn 上的注释不同。 .
这有效:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=cfcfb4877894d3ed7fbce88bfeddb45c

fn main() {
let f: fn(&str) -> &str = |s| s.trim();
println!("{}", f(" foo bar "));
}

关于rust - 一个独立的闭包是否可以使用 `&str` 并返回具有相同生命周期的 `&str`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66854904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com