我正在尝试将数字解码为整数,并且要么获取该数字的迭代器,要么获取空迭代器(如果它不是数字)。我尝试这样做:
let ch = '1';
ch.to_digit(10).map(once).unwrap_or(empty())
Run Code Online (Sandbox Code Playgroud)
这不能编译。我收到以下错误消息:
let ch = '1';
ch.to_digit(10).map(once).unwrap_or(empty())
Run Code Online (Sandbox Code Playgroud)
我有什么方法可以告诉我.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>
Run Code Online (Sandbox Code Playgroud)
对于 也是如此Result。
您需要做的就是调用(或在像循环一样into_iter调用的地方使用该值):IntoIteratorfor
fn x() -> impl Iterator<Item = u32> {
let ch = '1';
ch.to_digit(10).into_iter()
}
Run Code Online (Sandbox Code Playgroud)
也可以看看:
| 归档时间: |
|
| 查看次数: |
2017 次 |
| 最近记录: |