Bienvenidos sean a este post, hoy hablaremos sobre una variante de array.
En el post anterior dijimos que los array no solamente eran simples de crear sino que tenian el inconveniente de un tamaño fijo, vector se diferencia de los array justamente porque permite modificar el tamaño de estos, despues son significativamente similares pero con algunas diferencias, si tenemos que hacer un paralelismo con C# este tipo es mas parecido a List, tambien nos permite utilizar genericos como tipo, pasemos a ver la primera forma de crearlo:
let mut mi_vector: Vec<f32> = Vec::new();
Esta es su forma de definicion mas explicita, otra forma es:
let mut mi_vector = vec![4i32, 2, 4, 8, 16];
Si observan en el primer campo definimos no solamente el tamaño de nuestro vector sino tambien el tipo de dato que recibira, despues iran los valores para cada posicion pero como mencionamos al hablar de las variables no es necesario informar el tipo de dato dado que puede ser determinado por el lenguaje, tambien podemos crear uno donde solo le definamos el tamaño:
let mut mi_vector: Vec<i64> = Vec::with_capacity(30);
En este caso crearemos un vector de tipo int de 64 bits y mediante el metodo with_capacity le asignaremos un tamaño de 30 posiciones, trabaja de forma muy similar al visto en este post dado que definira la cantidad de informacion que podremos almacenar.
Por ultimo podemos crear un vector por medio de un iterador, en este caso el iterador es el metodo collect, para utilizarlo se debe hacer de la siguiente manera:
let mi_vector: Vec<u64> = (0..10).collect();
En este caso como establecimos un comienzo, el valor 0, y un final, valor 10, el iterador al encontrar este rango nos comenzara a llenar el vector con los valores del 0 al 9, habitualmente en todos los lenguajes el ultimo valor se establece como limite y siempre lo hacen hasta el valor anterior, tengan eso en cuenta a la hora de crear estos iteradores, pero retomando el ejemplo esta es una forma muy practica de generar uno que sabemos que debe contener esos valores, para entender mas este concepto vamos a ver un ejemplo.
Para crear el nuevo proyecto vamos a utilizar el siguiente comando:
cargo new vectores
Una vez creado vamos a reemplazar el codigo generado en main.rs por el siguiente:
main.rs
fn main() {
let mi_vector: Vec<i32> = (0..5).collect();
println!("{} {} {} {} {}", mi_vector[0],
mi_vector[1],
mi_vector[2],
mi_vector[3],
mi_vector[4]);
}
Este es un ejemplo simple pero practico, donde primero crearemos un Vector por medio del iterador collect, y le pasamos un rango de 5 numeros, luego por medio de println recuperamos las cinco posiciones que creamos con el iterador, compilemos y veamos su salida:
tinchicus@dbn001vrt:~/lenguajes/rust/vectores$ cargo build; cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `target/debug/vectores`
0 1 2 3 4
tinchicus@dbn001vrt:~/lenguajes/rust/vectores$
Esto es solo una forma practica de ver como crear y recuperar los elementos de un Vector, mas adelante al igual que en el caso de los arrays iremos implementando mejores metodos para utilizarlos, tambien a medida que vayamos avanzando iremos decidiendo que es mas practico o necesario para nuestros codigos ya sea implementar un array o un vector pero hasta aca tenemos la base de como trabajan.
En resumen, hoy hemos visto Vector, sus mejores con respecto a los array, como crearlas, como recuperar su informacion, y un ejemplo practico para verlo en accion, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
