Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Error handling 以字符串形式获取文件名_Error Handling_Rust_Compiler Errors_Path_Filenames - Fatal编程技术网

Error handling 以字符串形式获取文件名

Error handling 以字符串形式获取文件名,error-handling,rust,compiler-errors,path,filenames,Error Handling,Rust,Compiler Errors,Path,Filenames,我正在尝试使用以下代码获取给定字符串的文件名: fn获取\u文件名()->结果{ let file=“folder/file.text”; 让path=path::new(文件); 让filename=path.file_name()?.to_str()?; println!(“{}”,文件名); 好(()) } 但我得到了这个错误: error[E0277]:`?`无法将错误转换为`std::io::error'` 原始代码不想返回结果,但这是使用?的唯一方法。如何解决此问题?同时返回选项

我正在尝试使用以下代码获取给定字符串的文件名:

fn获取\u文件名()->结果{
let file=“folder/file.text”;
让path=path::new(文件);
让filename=path.file_name()?.to_str()?;
println!(“{}”,文件名);
好(())
}
但我得到了这个错误:

error[E0277]:`?`无法将错误转换为`std::io::error'`

原始代码不想返回
结果
,但这是使用
的唯一方法。如何解决此问题?

同时返回
选项
。在
None
变量上使用
运算符来转换为
Err
是一项实验性功能(请参阅)。如果您想使用<代码> 运算符,可以考虑在这里返回“代码> >选项<代码>或手动解包结果。

< P> < <代码> >文件名()/代码>和<代码> .toScript()/代码>此处返回<代码>选项< /代码>。在
None
变量上使用
运算符来转换为
Err
是一项实验性功能(请参阅)。如果你想使用<代码> 运算符,你可以考虑返回<代码>选项<代码>,或者用手解开结果。

基于尼克拉斯的答案是:

fn filename() -> Option<()> {
    let file = "hey.text";
    let path = Path::new(file);
    let filename = path.file_name()?.to_str()?;
    println!("{}",filename);
    None
}
fn filename()->选项{
让file=“hey.text”;
让path=path::new(文件);
让filename=path.file_name()?.to_str()?;
println!(“{}”,文件名);
没有一个
}

根据Niklas的回答,以下是答案:

fn filename() -> Option<()> {
    let file = "hey.text";
    let path = Path::new(file);
    let filename = path.file_name()?.to_str()?;
    println!("{}",filename);
    None
}
fn filename()->选项{
让file=“hey.text”;
让path=path::new(文件);
让filename=path.file_name()?.to_str()?;
println!(“{}”,文件名);
没有一个
}