在 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
}