Option 包含一些方法来简化模式匹配,毕竟过多的match会使代码变得臃肿,这也是滋生bug的原因之一。 (一)unwrap impl<T> Option<T> { fn unwrap(self) -> T { match self { Option::Some(val) => val, Option::None => { panic!("called `Option::unwrap()` on a `None` value"), } }} unwrap ...
Err(error) => println!("Error: {}", error), } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 总结 本篇博客介绍了Rust的各种数据类型,包括布尔类型、整数类型、浮点类型、字符类型、元组、数组、字符串、结构体、枚举、切片、Option类型和Result类型。对于每种数据类型,...
read_file函数接受文件路径,并返回Result<String, std::io::Error>错误。如果文件读取或打开操作失败,函数返回Err值。否则,函数返回Ok值。在main函数中,match语句处理Result值,并根据文件操作的情况打印输出结果。 Option类型 Option类型是表示值存在或不存在的内置类型。Option类型有两个变体。Some表示值,None表示没有...
usestd::fs;usestd::io::ErrorKind;fnread_a_file()->Result<usize,std::io::Error>{letcontent=fs::read_to_string("./input.txt")?;returnOk(content.len());}fnmain(){letsize=matchread_a_file(){Ok(val)=>val,Err(err)=>{matcherr.kind(){ErrorKind::NotFound=>{fs::File::create("...
Option是Rust的系统类型,用来表示值不存在的可能,这在编程中是一个好的实践,它强制Rust检测和处理值不存在的情况。例如: fn find(haystack: &str, needle: char) -> Option<usize> { for (offset, c) in haystack.char_indices() { if c == needle { ...
pub trait Error:Debug+Display{fndescription(&self)->&str{"description() is deprecated; use Display"}#[rustc_deprecated(since="1.33.0",reason="replaced by Error::source, which can support \ downcasting")]fncause(&self)->Option<&dyn Error>{self.source()}fnsource(&self)->Option<&(dyn ...
Option类型在Rust中用于表示可能为空的值。它有两个可能的取值:Some(value)表示有值,None表示无值。Option类型可以帮助我们处理可能出现空值的情况。 以下是一个Option类型的示例: 代码语言:javascript 复制 fndivide(x:f64,y:f64)->Option<f64>{ify!=0.0{Some(x/y)}else{None}}fnmain(){letresult=divide...
先说Option。Option这个东西要真的好用,就要为最常见的两个模式优化。一个是从Option<T>转回T。一个...
Rust使用Result这个enum来代表正确或错误的情况,思路来源于Haskell和OCaml等函数式语言,可以说是十分的优雅,特别体现在对Option和Iterator的交互上,但是对于新人入门来说需要一定的学习成本。 从我自身的使用情况来说,我总结了一下目前Rust(版本1.41.1)的错误处理的几个缺点: ...
fn first(arr: &[i32]) -> Option<&i32> {arr.get(0)?} 这段代码无法通过编译,切记:? 操作符需要一个变量来承载正确的值,这个函数只会返回 Some(&i32) 或者 None,只有错误值能直接返回,正确的值不行,所以如果数组中存在 0 号元素,那么函数第二行使用 ? 后的返回类型为 &i32 而不是 Some(&i32)。