< 返回版块
tch1121
发表于 2022-03-17 02:07
开始学rust 很多东西不懂 是和生命周期有关系码
fn main() {
let items: ReadDir = read_dir(".").unwrap();
for item in items {
if let Ok(curr) = item {
let name: &str = curr.file_name().to_str().unwrap();
// 打印会报错
eprintln!("{}", name);
}
}
}
评论区
写评论说清楚到底是编译错误还是运行错误。你说的给人感觉是运行错误。最好贴出错误详情。
你这个是 rust 最常见的临时变量超生命期借用编译错误,编译器已经告诉你了:
波浪线标出的
curr.file_name()
是超范围借用的临时变量,只要给他一个变量名就好我个人理解是引用给了name,name又会在if这个作用域内结束自己的生命,所以报错了。