fn ok_or<T, E>(option: Option<T>, err: E) -> Result<T, E> { match option { Some(val) => Ok(val), None => Err(err), }} 可以在值为None的时候返回一个Result::Err(E),值为Some(T)的时候返回Ok(T),利用它我们可以组合Option和Result: use std::env; fn double_arg(mut argv: ...
Rust 的Option类型是一个枚举,有两个变体:Some和None ,表示值存在和不存在。 Result是一个枚举(enum),有两个变体:Ok和Err, 表示错误类型为空和err
use std::io::Error;fnmain(){letpath="/tmp/dat";//文件路径matchread_file(path){//判断方法结果Ok(file)=>{println!("{}",file)}//OK 代表读取到文件内容,正确打印文件内容Err(e)=>{println!("{} {}",path,e)}//Err代表结果不存在,打印错误结果}}fnread_file(path:&str)->Result<String,...
enumMyError{SomeError,AnotherError,}fndo_something()->Result<(),MyError>{// 在发生错误的情况下返回自定义错误类型Err(MyError::SomeError)}fnmain(){matchdo_something(){Ok(_)=>println!("操作成功"),Err(error)=>match error{MyError::SomeError=>println!("遇到了 SomeError"),MyError::Another...
rust为了处理情况设置的两个枚举类型,分别是enum Option 和enum Result。 Option的枚举情况有两种,分别是代表有的Some()和代表无的None。 如果是有返回值,则可以通过if let,match,unwrap,?等多种方法对应情况取出Some包裹的值,如果没有则是None。 Result的枚举情况也是有两种,表示正确的Ok()和表示错误的Err()。
你可以使用map_or(),把Some(_)转换成Err(666),把None转换成Ok(()),但是,这不是惯用的,我...
("{some_int}") } 2.5 【推荐】映射为 Option // ok :Ok 转换为 Some,Err 转换为 None let option: Option<i32> = foo.ok(); // err:Ok 转换为 None,Err 转换为 Some let Option: Option<&‘static str> = foo.err(); 2.6 映射为其他类型 // map:将 Ok 中带的类型转换为其他类型,(...
Result枚举有两个成员,Ok和Err。T和E是泛型参数,T代表成功返回的Ok成员中的数据类型。E代表失败返回的Err成员中的错误的类型。有了这两个泛型参数,可以将Result枚举作为函数的返回值,用于各种场景下的可恢复错误的处理,当函数成功时返回Ok(T),失败时返回Err(E)。
你可以使用map_or(),把Some(_)转换成Err(666),把None转换成Ok(()),但是,这不是惯用的,我...
:to_string_pretty(&root_schema).expect("failure to parse RootSchema");let config = serde_json::from_str::<T>(&*data).expect(&format!("failure to format json str {}",&data));// 返回格式化结果Some(config)}Err(err) => {// 记录日志info!("{}",err);// 返回NoneNone}}}复制代码...