6 个版本

0.1.6 2020年4月20日
0.1.5 2020年4月20日

#6 in #fold

自定义许可

775KB
116 代码行,不含注释

包含 (WOFF 字体, 190KB) doc/FiraSans-Medium.woff, (WOFF 字体, 185KB) doc/FiraSans-Regular.woff, (WOFF 字体, 94KB) doc/SourceSerifPro-Bold.ttf.woff, (WOFF 字体, 89KB) doc/SourceSerifPro-Regular.ttf.woff, (WOFF 字体, 56KB) doc/SourceCodePro-Regular.woff, (WOFF 字体, 56KB) doc/SourceCodePro-Semibold.woff 及更多.

vecfold: 将 Results 向量折叠为向量结果的 Result

此包提供了一种通用的方法来 "unwrap" 一个 Vec<Result<T,E>>Result<Vec<&T>>, &E>。以下是一个例子

let valid: Vec<Result<u32, _>> = "1,2,3".split(",").map(|x| x.parse::<u32>()).collect();
let invalid: Vec<Result<u32, _>> = "1,2,a".split(",").map(|x| x.parse::<u32>()).collect();

// happy path, no errors, just the values
assert_eq!(vec![&1, &2, &3], valid.foldr().unwrap());

// sad path returns the error
assert!(invalid.foldr().is_err());

如果您需要收集所有错误,可以使用 .foldr_bisect。它将 Vec<Result<T, E>> 转换为 (Vec<&T>, Vec<&E>)

// happy path, no errors, return empty error vector
assert_eq!((vec![&1, &2, &3], vec![]), valid.foldr_bisect());

// sad path, populate error vector
let (ok, _) = invalid.foldr_bisect();
assert_eq!(vec![&1, &2], ok);

无运行时依赖