Existe alguna forma de consumir directamente una cadena de Rayón sin recogerla primero?

Estoy usando Rayon para producir valores de retorno razonablemente grandes. Esto utiliza mucha memoria al recopilar todos los valores devueltos en unaVec. ¿Hay alguna manera de evitar crear unaVec y consumir directamente como iterable?

Aquí hay un ejemplo que no funciona:

fn main() {
    let numbers: Vec<_> = "12.03 0.3 44.2 45 zzz".split_whitespace().collect();

    let x = numbers
        .par_iter()
        .map(|n| n.parse::<f32>())
        .filter_map(|n| n.ok());

    for n in x {
        println!("{:?}", n);
    }
}
error[E0277]: the trait bound `rayon::iter::FilterMap<rayon::iter::Map<rayon::slice::Iter<'_, &str>, [closure@src/main.rs:10:14: 10:34]>, [closure@src/main.rs:11:21: 11:31]>: std::iter::Iterator` is not satisfied
   |
13 |     for n in x {
   |              ^ `rayon::iter::FilterMap<rayon::iter::Map<rayon::slice::Iter<'_, &str>, [closure@src/main.rs:10:14: 10:34]>, [closure@src/main.rs:11:21: 11:31]>` is not an iterator; maybe try calling `.iter()` or a similar method
   |
   = help: the trait `std::iter::Iterator` is not implemented for `rayon::iter::FilterMap<rayon::iter::Map<rayon::slice::Iter<'_, &str>, [closure@src/main.rs:10:14: 10:34]>, [closure@src/main.rs:11:21: 11:31]>`
   = note: required by `std::iter::IntoIterator::into_iter`

patio de recre

Respuestas a la pregunta(1)

Su respuesta a la pregunta