The position() function from Iterator short-circuits. What's the rustacean way to do what position() does, but to get the indices of all elements in the iterator that return true?
fn main() {
let a = vec![-2,-1,1,2];
let first_positive = a.iter().position(|&x| x > 0).unwrap();
println!("{:#?}", first_positive)
// let all_positives = ??
// should return [2,3]
}