代码之家  ›  专栏  ›  技术社区  ›  Ta Thanh Dinh

从选项到迭代器[重复]

  •  0
  • Ta Thanh Dinh  · 技术社区  · 7 年前

    我有一个使用迭代器的函数:

    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);
    

    因为编译器抱怨两个分支的类型不同。有没有不使用的方法 盒子 在这种情况下?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Jmb    7 年前

    Option 有一个 iter method 那就是你想要的。

    推荐文章