Rust具有一些让人眼前一亮的特点:无GC也不需手动管理内存、高性能、安全性强等等。但其诸多优点背后的代价,就是学习曲线相当陡峭。
Rust的困难,不在于语言特性,而在于:
- 具体实践中如何运用学到的技巧
- 遇到了坑时(生命周期、借用错误,自引用等)如何迅速、正确的解决
- 大量的标准库API的熟练使用,这是保证开发效率的关键
错误处理相关
将Option类型转换为Result类型
使用ok_or方法:
fn foo(abs_path: &str) -> Result<String, String> {
let path = PathBuf::from(abs_path);
let relative = path.file_name()
.ok_or(format!("Failed to get relative_name for `{}`", abs_path))?;
let res = relative.to_str().unwrap();
Ok(res.to_owned())
}

