5 个版本
0.1.4 | 2023 年 12 月 2 日 |
---|---|
0.1.3 | 2023 年 11 月 28 日 |
0.1.2 | 2023 年 11 月 28 日 |
0.1.1 | 2023 年 11 月 28 日 |
0.1.0 | 2023 年 11 月 28 日 |
#986 在 Rust 模式
每月 41 次下载
7KB
125 行
scalar_map
map
用于标量类型。
let num: Option<i32> = Some(42);
assert_eq!(num.map(|x| 42 - x), Some(0));
let num: i32 = 42;
assert_eq!(num.map(|x| 42 - x), 0);
let num: Option<i32> = Some(42);
assert_eq!(num.and_then(Option::Some), Some(0));
let num: i32 = 42;
assert_eq!(num.and_then(Option::Some), Some(0));
解决什么问题
-
即使在将
Option
重新构建的情况下,您仍然可以保留map
和and_then
。 -
您想要
x.map(Mutex::new).map(Arc::new)
...而不是
Arc::new(Mutex::new(x))
自定义结构体
派生
# Run this to add the `derive` feature
cargo add scalar_map --features derive
#[derive(Debug, PartialEq, ScalarMap)]
struct MyNum(i32);
let num = MyNum(42);
assert_eq!(num.map(|x| 42 - x.0).map(MyNum), MyNum(0));
不派生
#[derive(Debug, PartialEq)]
struct MyNum(i32);
impl ScalarMapExt for MyNum {}
let num = MyNum(42);
assert_eq!(num.map(|x| 42 - x.0).map(MyNum), MyNum(0));
依赖项
~105KB