У меня есть код, который пытается выполнить совпадение, где каждая ветка может возвращать другой тип, но все эти типы реализуют Iterator<Item=usize>
.Сопровождать оружие, возвращающее итераторы?
let found: Iterator<Item = usize> = match requirements {
Requirements::A => MatchingAs { ainternals: [] },
Requirements::B => MatchingBs { binternals: [] },
Requirements::C => MatchingCs { cinternals: [] },
};
return found.any(|m| m == 1)
... где MatchingAs
, MatchingBs
и MatchingCs
все impl
std::iter::Iterator<Item = usize>
.
Я ударяя стену с тем, что Iterator
не SIZED:
| the trait `std::marker::Sized` is not implemented for `std::iter::Iterator<Item=usize>`
Есть хороший подход, чтобы иметь спички руки возвращают объекты с общей чертой, а затем полагаться (только) по признаку обработки результатов?
Пожалуйста, объясните, почему это не дубликат [Правильный способ возврата Итератора?] (Http://stackoverflow.com/q/27535289/155423) – Shepmaster