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. enprintln!()en lugar de una función normalprintln() - 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;
};
}
- 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 variablenumerosin sobrescribir su contenido&mutpara poder mutar el contenido de la variable
- Manejar la respuesta de
read_line
read_linedevuelve un valor Result (es una enumeración, lo que significa que puede estar en uno de varios estados o valores), los posibles valores sonOkyErr- Los Result tienen métodos que se pueden ejecutar, por ejemplo,
expect - Si Result es
Errentoncesexpect, hará que el programa se bloquee y mostrará el mensaje - Si Result es
Okentonces devolverá el valor, en este caso, lo que el usuario ingresó y el mensaje se ignora - Si no se ejecuta
resultel programa mostrará advertencias ya que no se está manejando el posible error
- Parseo
- Los errores manejados con
expectbloquean el programa - Para evitar que el programa se bloquee, se maneja manualmente los posibles resultados
- Se cambia de
expectamatch 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::Displayse 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
Orderinges un enum y tiene las variantes de Less, Greater y Equal, se utiliza para manejar las respuestas decmpcmpdevuelve 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