在 Rust 中获取文件名作为字符串
Get the file name as a string in Rust
我正在尝试使用以下代码获取给定字符串的文件名:
fn get_filename() -> Result<(), std::io::Error> {
let file = "folder/file.text";
let path = Path::new(file);
let filename = path.file_name()?.to_str()?;
println!("{}",filename);
Ok(())
}
但是我得到这个错误:
error[E0277]: `?` couldn't convert the error to `std::io::Error`
原来的代码不想returnResult
,但只有这样才能使用?
。我该如何解决这个问题?
.file_name()
和 .to_str()
都 return 和 Option
。在 None
变体上使用 ?
运算符转换为 Err
是一项实验性功能(请参阅 the NoneError
documentation)。如果要使用 ?
运算符,可以考虑在此处 returning Option<()>
或手动展开结果。
根据 Niklas 的回答,这里是答案:
fn filename() -> Option<()> {
let file = "hey.text";
let path = Path::new(file);
let filename = path.file_name()?.to_str()?;
println!("{}",filename);
None
}
我正在尝试使用以下代码获取给定字符串的文件名:
fn get_filename() -> Result<(), std::io::Error> {
let file = "folder/file.text";
let path = Path::new(file);
let filename = path.file_name()?.to_str()?;
println!("{}",filename);
Ok(())
}
但是我得到这个错误:
error[E0277]: `?` couldn't convert the error to `std::io::Error`
原来的代码不想returnResult
,但只有这样才能使用?
。我该如何解决这个问题?
.file_name()
和 .to_str()
都 return 和 Option
。在 None
变体上使用 ?
运算符转换为 Err
是一项实验性功能(请参阅 the NoneError
documentation)。如果要使用 ?
运算符,可以考虑在此处 returning Option<()>
或手动展开结果。
根据 Niklas 的回答,这里是答案:
fn filename() -> Option<()> {
let file = "hey.text";
let path = Path::new(file);
let filename = path.file_name()?.to_str()?;
println!("{}",filename);
None
}