3个版本
0.1.2 | 2024年7月19日 |
---|---|
0.1.1 | 2024年7月18日 |
0.1.0 | 2024年7月18日 |
#302 in 过程宏
每月252次下载
6KB
68 行
zips
因为我讨厌不能用Option::zip来处理超过2个参数...
安装
$> cargo add zips
使用方法
use zips::{zip, zip_result};
fn main() -> () {
let i: Option<i32> = Some(0);
let j: Option<usize> = Some(1usize);
let k: Option<usize> = None;
// zipped_some: Option<(i32, usize)>
let zipped_some = zip!(i, j);
assert_eq!(zipped_some, Some((0, 1usize)));
// zipped_none: Option<(i32, usize, usize)>
let zipped_none = zip!(i, j, j);
assert_eq!(zipped_none, None);
let m: Result<i32, String> = Ok(1);
let n: Result<usize, String> = Ok(0usize);
let o: Result<usize, String> = Err("I'm an error!");
// zipped_ok: Option<(i32, usize)>
let zipped_ok = zip_result!(m, n);
assert_eq!(zipped_some, Some((1, 0usize)));
// zipped_err: Option<(i32, usize, usize)>
let zipped_err = zip_result!(m, n, o);
assert_eq!(zipped_err, None);
}
依赖项
~240–680KB
~16K SLoC