Function core::array::try_from_fn
source · pub fn try_from_fn<R, const N: usize, F>(
cb: F
) -> <<R as Try>::Residual as Residual<[R::Output; N]>>::TryTypewhere
F: FnMut(usize) -> R,
R: Try,
R::Residual: Residual<[R::Output; N]>,
🔬This is a nightly-only experimental API. (
array_try_from_fn
#89379)Expand description
创建一个数组 [T; N]
,其中每个易出错的数组元素 T
由 cb
调用返回。
与 from_fn
的元素创建不能失败不同,如果任何元素创建失败,此版本将返回错误。
这个函数的返回类型取决于闭包的返回类型。
如果您从闭包返回 Result<T, E>
,您会得到一个 Result<[T; N], E>
.
如果您从闭包中返回 Option<T>
,您会得到一个 Option<[T; N]>
.
Arguments
cb
: 回调,其中传入的参数是当前数组索引。
Example
#![feature(array_try_from_fn)]
let array: Result<[u8; 5], _> = std::array::try_from_fn(|i| i.try_into());
assert_eq!(array, Ok([0, 1, 2, 3, 4]));
let array: Result<[i8; 200], _> = std::array::try_from_fn(|i| i.try_into());
assert!(array.is_err());
let array: Option<[_; 4]> = std::array::try_from_fn(|i| i.checked_add(100));
assert_eq!(array, Some([100, 101, 102, 103]));
let array: Option<[_; 4]> = std::array::try_from_fn(|i| i.checked_sub(100));
assert_eq!(array, None);
Run