Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
You're very much on the right track. std::iter::FromIterator trait This trait is indeed what makes it work. In particular, both functions' return types implement the trait: std::result::Result&l...
Answer
#1: Initial revision
You're very much on the right track. # std::iter::FromIterator trait This trait is indeed what makes it work. In particular, both functions' return types implement the trait: `std::result::Result<A,E>` implements it if `A` implements it.[^result] And here `A = std::Vec`. `std::Vec` implements it as long as the iterated type matches the type contained in the Vec.[^vec] # Turbofish operator Yes you can force `collect`'s output type with the turbofish operator: ```rust someIter.collect::<Vec<Result<i32, DivisionError>>() ``` Or you don't have to specify the whole type: ```rust someIter.collect::<Vec<Result<_>>() someIter.collect::<Vec<_>() ``` If not on the returning line, you could also use type annotations ```rust let vec_of_results: <Vec<Result<i32, DivisionError>> = someIter.collect(); ``` [^result]: Documentation: https://doc.rust-lang.org/std/result/enum.Result.html#impl-FromIterator%3CResult%3CA,+E%3E%3E-for-Result%3CV,+E%3E [^vec]: Documentation: https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-FromIterator%3CT%3E-for-Vec%3CT%3E