我有一个使用迭代器的函数:
fn func<T: iter::Iterator<Item = char>>(i: T) {
//...
}
Option<char>
(类型
char
solution
是:
使用std::iter;
fn option_iter(input: Option<char>) {
let i: Box<iter::Iterator<Item = char>> = if let Some(input) = input {
Box::new(iter::once(input))
} else {
Box::new(iter::empty())
};
}
Box
. 我不能使用:
let i = if let Some(input) = input {
iter::once(input)
} else {
iter::empty()
};
func(i);
因为编译器抱怨两个分支的类型不同。有没有不使用的方法
盒子
在这种情况下?