12次发布
0.5.0 | 2023年12月29日 |
---|---|
0.4.6 | 2023年2月23日 |
0.4.5 | 2022年8月7日 |
0.4.3 | 2022年6月7日 |
0.1.0 | 2020年1月4日 |
#238 在 Rust模式
6,910 每月下载量
在 6 个crate中使用 (通过 rustpython-vm)
12KB
97 代码行
OptionLike 和 ResultLike
安装: https://crates.io/crates/result-like
定义您自己的类似Option和Result的枚举类型。避免为您的枚举重新实现所有功能。
Option示例
use result_like::OptionLike;
// Simple case with single argument name to use Some and None
#[derive(OptionLike)]
enum MyOption<T> {
Some(T),
None,
}
let v = MyOption::Some(1);
// every option utilities are possible including unwrap, map, and, or etc.
assert_eq!(v.unwrap(), 1);
// convertable to option
let opt = v.into_option();
assert_eq!(opt, Some(1));
// enum with custom names instead of Some and None
#[derive(OptionLike)]
enum Number {
Value(i64),
Nan,
}
let v = Number::Value(10);
assert_ne!(v, Number::Nan);
以相同方式的结果示例
use result_like::ResultLike;
// typical
#[derive(ResultLike)]
enum MyResult<T, E> {
Ok(T),
Err(E),
}
// value-only
#[derive(ResultLike)]
enum Trial {
Success(String),
Failure(String),
}
依赖关系
~310–770KB
~18K SLoC