rust - 使用 rust 将文件名收集到向量中时,借用值的寿命不够长
问题描述
我不熟悉 rust 并试图将文件收集到字符串向量中。
use glob::glob;
use std::env;
fn main() {
let mut file_names: Vec<&str> = Vec::new();
let cwd = env::current_dir().unwrap();
for entry in glob(cwd.to_str().unwrap()).expect("Failed to read directory.") {
match entry {
Ok(file) => {
println!("{:?}", file.file_name());
let file_name = file.file_name().unwrap().to_str();
file_names.push(file_name.unwrap());
}
Err(e) => println!("{:?}", e),
}
}
}
收到以下错误。
error[E0597]: `file` does not live long enough
--> src/main.rs:13:33
|
13 | let file_name = file.file_name().unwrap().to_str();
| ^^^^ borrowed value does not live long enough
14 | file_names.push(file_name.unwrap());
| ---------- borrow later used here
15 | }
16 | Err(e) => println!("{:?}", e),
| - `file` dropped here while still borrowed
error: aborting due to previous error
我不确定如何将文件名推送到向量中。谢谢!
解决方案
感谢@PeterHall,这是更正的代码。
use glob::glob;
use std::env;
fn main() {
let mut file_names: Vec<String> = Vec::new();
let cwd = env::current_dir().unwrap();
for entry in glob(cwd.to_str().unwrap()).expect("Failed to read logs directory.") {
match entry {
Ok(file) => {
println!("{:?}", file.file_name());
let file_name = file.file_name().unwrap().to_str().unwrap();
file_names.push(file_name.to_string());
}
Err(e) => println!("{:?}", e),
}
}
for file_name in file_names {
println!("{:?}", file_name);
}
}
推荐阅读
- c++ - C++ 方法定义不知道类类型
- python - 如何在ubuntu中使用xampp运行python脚本
- .htaccess - htaccess RewriteRule 前导斜杠?
- c# - 引导卡未显示在视图中
- android - 如何知道何时在 android (webview) 中连接了 WebRTC?
- android - Unable to scroll RecyclerView
- pyspark - 如何在范围内加入时间戳(范围不存在)
- html - 访问根目录以访问背景图像?
- javascript - 在 Babeljs 配置中使用原生 ECMAScript 模块
- java - 避免 Generic 类型的 Generic 重复