如何解决在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`
原始代码不想返回Result,但这是使用?
的唯一方法。我该如何解决?
解决方法
.file_name()
和.to_str()
都返回一个Option
。在?
变体上使用None
运算符来转换为Err
是一项实验性功能(请参见the NoneError
documentation)。如果要使用?
运算符,可以考虑在此处返回Option<()>
或手动展开结果。
根据尼古拉斯的回答,这里是答案:
fn filename() -> Option<()> {
let file = "hey.text";
let path = Path::new(file);
let filename = path.file_name()?.to_str()?;
println!("{}",filename);
None
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。