我正在尝试将数字解码为整数,并获得仅对此数字进行迭代的迭代器,或者如果不是数字,则获取一个空迭代器。我试图这样做:
let ch = '1';
ch.to_digit(10).map(once).unwrap_or(empty())
这不会编译。我收到以下错误消息:
error[E0308]: mismatched types
--> src/lib.rs:6:41
|
6 | ch.to_digit(10).map(once).unwrap_or(empty());
| ^^^^^^^ expected struct `std::iter::Once`, found struct `std::iter::Empty`
error[E0308]: mismatched types
--> src/lib.rs:6:41
|
6 | ch.to_digit(10).map(once).unwrap_or(empty());
| ^^^^^^^ expected struct `std::iter::Once`, found struct `std::iter::Empty`
|
|
= note: expected type `std::iter::Once<u32>`
found type `std::iter::Empty<_>`
= note: expected type `std::iter::Once<u32>`
found type `std::iter::Empty<_>`
我有什么办法告诉.unwrap_or(...)
我我不在乎实际的类型,而只是我会得到一个实现Iterator
?
该IntoIterator
特征仅出于能够将类型转换为迭代器的目的而存在:
转换为迭代器。
通过实现
IntoIterator
类型,可以定义如何将其转换为迭代器。这对于描述某种集合的类型很常见。实现的好处之一
IntoIterator
是您的类型将与Rust的for循环语法一起使用。
如何将an转换
Option<T>
为零或一个元素的迭代器?
Option
实现IntoIterator
:
impl<'a, T> IntoIterator for &'a mut Option<T>
impl<T> IntoIterator for Option<T>
impl<'a, T> IntoIterator for &'a Option<T>
的情况也是如此Result
。
您所需要做的就是调用into_iter
(或在IntoIterator
像for
循环这样调用的地方使用值):
fn x() -> impl Iterator<Item = u32> {
let ch = '1';
ch.to_digit(10).into_iter()
}
也可以看看:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句