1 个不稳定版本
0.2.1 | 2024 年 4 月 10 日 |
---|---|
0.2.0 |
|
0.1.4 |
|
19 在 #result 中排名
每月 262 次下载
6KB
93 行
opt2r
lib.rs
:
一个简单的 crate(库),提供将 Option 转换为 Result 的方法。
使用方法
use opt2r::OptionToResult;
const CUSTOM_ERROR_CODE_OPTION_IS_NONE: i32 = 1;
const CUSTOM_ERROR_STR_OPTION_IS_NONE: &str = "Custom Error: Option is None.";
fn example1() -> opt2r::Result<()> {
let a = make_some().ok_or_()?;
let a = make_some().ok_or(opt2r::opt_is_none!())?;
let b = make_none().ok_or_()?;
Ok(())
}
fn example2() -> Result<(), i32> {
let a = make_some().ok_or(opt2r::opt_is_none_i32!())?;
//let b = make_none().ok_or_()?;
let b = make_none().ok_or(opt2r::err!(CUSTOM_ERROR_CODE_OPTION_IS_NONE))?;
Ok(())
}
fn example3() -> Result<(), String> {
let a = make_some().ok_or_()?;
let a = make_some().ok_or(opt2r::opt_is_none!())?;
let a = make_some().ok_or(opt2r::err!(CUSTOM_ERROR_STR_OPTION_IS_NONE))?;
let a = make_some().ok_or(opt2r::Error::new(CUSTOM_ERROR_STR_OPTION_IS_NONE))?;
let b = make_none().ok_or_()?;
Ok(())
}
fn example4() -> Result<(), Box<dyn opt2r::StdError>> {
let a = make_some().ok_or_()?;
let a = make_some().ok_or(opt2r::opt_is_none!())?;
let b = make_none().ok_or_()?;
Ok(())
}
fn main() {
if let Err(err) = example1() {
println!("example1 err={}, {}", err, err.error_value());
}
if let Err(err) = example2() {
println!("example2 err={}", err);
}
if let Err(err) = example3() {
println!("example3 err={}", err);
}
//example4().unwrap();
if let Err(err) = example4() {
println!("example4 err={}", err);
}
}
fn make_some() -> Option<i32> {
Some(100)
}
fn make_none() -> Option<f64> {
None
}