traduccion lenguaje language descargar color rust

rust - lenguaje - ¿Es posible dividir un vector en grupos de 10 con iteradores?



rust traduccion (1)

No hay tal método de ayuda en el rasgo del Iterator directamente. Sin embargo, hay dos formas principales de hacerlo:

  1. Utilice el método [T]::chunks() (que puede Vec<T> directamente en un Vec<T> ). Sin embargo, tiene una pequeña diferencia: no producirá None , pero la última iteración produce un slice más pequeño.

    Ejemplo :

    let my_vec = (0..25).collect::<Vec<_>>(); for chunk in my_vec.chunks(10) { println!("{:02?}", chunk); }

    Resultado:

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] [20, 21, 22, 23, 24]

  2. Use el Itertools::chunks() de las itertools caja . Esta caja amplía el rasgo del Iterator de la biblioteca estándar. ¡Así que este método chunks() funciona con todos los iteradores! Tenga en cuenta que el uso es un poco más complicado para ser tan general. Esto tiene el mismo comportamiento que el método descrito anteriormente: en la última iteración, el fragmento será más pequeño en lugar de contener None .

    Ejemplo :

    extern crate itertools; use itertools::Itertools; for chunk in &(0..25).chunks(10) { println!("{:02?}", chunk.collect::<Vec<_>>()); }

    Resultado:

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] [20, 21, 22, 23, 24]

Tenga en cuenta también que:

  • En su código, vec![0..25] no está haciendo lo que espera que haga. Creará un vector con un elemento. Ese elemento es un Range . Lo arreglé en los ejemplos de arriba.
  • En Rust, las variables tienen nombres de snake_case .

He let myVec = vec![0..25] y me gustaría dividir myVec en iteradores de grupos de 10:

[0,1,2,3,4,5,6,7,8,9] [10,11,12,13,14,15,16,17,18,19] [20,21,22,23,24,25,None,None,None,None]

¿Es posible hacer eso con iteradores en Rust?