Saltar al contenido principal

Notas en construcción

Notas

  • Macros: Formas de escribir código que genera más código. Se llama una macro cuando se utiliza !, ej. en println!() en lugar de una función normal println()
  • Se puede utilizar un ejecutable de Rust sin tener las herramientas instaladas (compilador, cargo, etc.) ya que es un binario
  • La sangría es de cuatro espacios

String

  • String es un tipo de cadena proporcionado por la biblioteca estándar
  • Es una parte de texto codificada en UTF-8
  • Puede crecer

::new()

// ::, ::new() indica que new es una función asociada o implementada del tipo String
// ::new() crea una cadena vacía
let mut text = String::new();

IO

use std::io;

fn main() {
    println!("Escribir mensaje: ");

    let mut input = String::new();

    // Solicitar datos
    io::stdin()
        .read_line(&mut input) // no sobreescribe la variable
        .expect("Error al leer el mensaje.");

    println!("El mensaje es: {}", input);
   
    // Parseo
    //let input: u8 = input.trim().parse().expect("Solo se permiten números");
    // manejando el expect manualmente
    let input: u8 = match input.trim().parse() {
      Ok(num) => num,
      Err(_) => continue, // Crea un salto del loop, pero no es break;
    };
}
  1. Leer o solicitar datos al usuario read_line()
  • .read_line(&mut numero), toma lo que escribe el usuario y lo agrega a la cadena o variable numero sin sobrescribir su contenido
  • &mut para poder mutar el contenido de la variable
  1. Manejar la respuesta de read_line
  • read_line devuelve un valor Result (es una enumeración, lo que significa que puede estar en uno de varios estados o valores), los posibles valores son Ok y Err
  • Los Result tienen métodos que se pueden ejecutar, por ejemplo, expect
  • Si Result es Err entonces expect, hará que el programa se bloquee y mostrará el mensaje
  • Si Result es Ok entonces devolverá el valor, en este caso, lo que el usuario ingresó y el mensaje se ignora
  • Si no se ejecuta result el programa mostrará advertencias ya que no se está manejando el posible error
  1. Parseo
  • Los errores manejados con expect bloquean el programa
  • Para evitar que el programa se bloquee, se maneja manualmente los posibles resultados
  • Se cambia de expect a match
  • Err(_), el guion bajo (_) es un valor de captura, por ejemplo, coincidir con todos los valores de Err

Print

  • El nombre de las variables puede ir dentro de los corchetes {product}
  • Si se está imprimiendo el resultado de una operación o método, se escribe después de la coma
  • Si son varios resultados o variables, se pueden ir separando por coma y se irán mostrando en orden
  • Para mostrar variables que no implementen std::fmt::Display se puede utilizar {:?} o para verlo en formateado {:#?}
let x = 5; 
let y = 10;
let person: (String, u8, bool, f64) = (
"Jhon Doe".to_string(),
25,
true,
5.6
);

println!("x = {x} and y + 2 = {}", y + 2);
println!("Person: {:#?}", person);

Ordering

  • Utilizar para comparar y ordenar valores
  • Agregar el use
  • Ordering es un enum y tiene las variantes de Less, Greater y Equal, se utiliza para manejar las respuestas de cmp
  • cmp devuelve una variante de Ordering
  • Se puede llamar en cualquier cosa que se pueda comparar
  • Toma una referencia con lo que se va a comparar

match

  • Termina después de la primera coincidencia exitosa