2个稳定版本
1.1.0 | 2022年1月18日 |
---|---|
1.0.0 | 2021年5月15日 |
60 in #collect
11KB
129 行
该软件包允许从迭代器初始化数组。
示例
use from_iter::FromIterator;
let iter = (0..).map(|i| i * 2);
let array = <[i32; 8]>::from_iter(iter);
assert_eq!(array, [0, 2, 4, 6, 8, 10, 12, 14]);
use from_iter::FromIterator;
let first = vec![1, 1, 2, 3, 5, 8, 13, 21, 34].into_iter();
let even_fibonaccis = first.filter(|n| n % 2 == 0);
let array = <[i32; 3]>::from_iter(even_fibonaccis);
use from_iter::FromIterator;
let short_iterator = vec![1, 2, 3].into_iter();
let long_array = match <[i32; 1000]>::try_from_iter(short_iterator) {
Ok(long_array) => long_array,
Err(e) => {
eprintln!("{}", e);
return;
}
};
请注意,如果迭代器提供的元素不足以填充整个数组,则 from_iter
方法将引发恐慌。为了避免这种情况,请考虑使用 try_from_iter
方法。
这两种方法都会忽略迭代器中的任何额外元素。
lib.rs
:
该软件包允许从迭代器初始化数组。
示例
use from_iter::FromIterator;
let iter = (0..).map(|i| i * 2);
let array = <[i32; 8]>::from_iter(iter);
assert_eq!(array, [0, 2, 4, 6, 8, 10, 12, 14]);
use from_iter::FromIterator;
let first = vec![1, 1, 2, 3, 5, 8, 13, 21, 34].into_iter();
let even_fibonaccis = first.filter(|n| n % 2 == 0);
let array = <[i32; 3]>::from_iter(even_fibonaccis);
use from_iter::FromIterator;
let short_iterator = vec![1, 2, 3].into_iter();
let long_array = match <[i32; 1000]>::try_from_iter(short_iterator) {
Ok(long_array) => long_array,
Err(e) => {
eprintln!("{}", e);
return;
}
};
请注意,如果迭代器提供的元素不足以填充整个数组,则 from_iter 方法将引发恐慌。为了避免这种情况,请考虑使用 try_from_iter 方法。
这两种方法都会忽略迭代器中的任何额外元素。