Articles of moho

¿Cómo terminar un préstamo en un partido o si se deja express?

Estoy usando un HashMap para almacenar una enumeración. Me gustaría obtener un valor de HashMap y si el valor es una variante de enumeración específica, me gustaría insertar una copia modificada del valor en el HashMap . El código que se me ocurrió es así: if let Node::LeafNode(mut leaf_node) = *(self.pages.get(&page).unwrap()) { let mut leaf_node […]

¿Cómo llamar a un método cuando un rasgo y una estructura usan el mismo nombre?

Este progtwig muere debido a la recursión infinita: use std::any::Any; trait Foo { fn get(&self, index: usize) -> Option; } impl Foo for Vec { fn get(&self, index: usize) -> Option { Vec::get(self, index).map(|v| v as &Any) } } fn main() { let v: Vec = vec![1, 2, 4]; println!(“Results: {:?}”, v.get(0)) } El comstackdor […]

¿Qué significa “tipos no coincidentes: esperado` () `” cuando se usa una expresión if?

Intenté implementar fizzbuzz en Rust y fallé con un error arcano: fn main() { let mut i = 1; while i < 100 { println!( "{}{}{}", if i % 3 == 0 { "Fizz" }, if i % 5 == 0 { "Buzz" }, if !(i % 3 == 0 || i % 5 == […]

¿Por qué la comstackción no falla cuando se asigna un miembro de un valor movido?

Estoy trabajando con ejemplos en Rust por ejemplo . #[derive(Debug)] struct Point { x: f64, y: f64, } #[derive(Debug)] struct Rectangle { p1: Point, p2: Point, } fn main() { let mut point: Point = Point { x: 0.3, y: 0.4 }; println!(“point coordinates: ({}, {})”, point.x, point.y); let rectangle = Rectangle { p1: Point […]

Compara las enumeraciones solo por variante, no valor

Tengo una enumeración con la siguiente estructura: enum Expression { Add(Add), Mul(Mul), Var(Var), Coeff(Coeff) } donde los ‘miembros’ de cada variante son estructuras. Ahora quiero comparar si dos enumeraciones tienen la misma variante. Entonces si tengo let a = Expression::Add({something}); let b = Expression::Add({somethingelse}); cmpvariant(a, b) debe ser true . Puedo imaginar un código de […]

¿Cómo evitar las asignaciones temporales al usar una clave compleja para un HashMap?

Estoy usando una clave compleja para HashMap modo que la clave consta de dos partes y una parte es una String , y no puedo averiguar cómo hacer búsquedas mediante el método HashMap::get sin asignar una nueva String para cada búsqueda. Aquí hay un código: #[derive(Debug, Eq, Hash, PartialEq)] struct Complex { n: i32, s: […]

¿Cómo convierto un Vector de bytes (u8) a una cadena?

Estoy intentando escribir un cliente TCP / IP simple en Rust y necesito imprimir el buffer que obtuve del servidor. ¿Cómo convierto el vector u8 en una String para imprimir?

Condicionalmente iterar sobre uno de varios iteradores posibles

Intento cambiar el comportamiento en función de una entrada de Option a una función. La idea es iterar en función de si una Option dada está presente o no. Aquí hay un ejemplo mínimo, aunque tonto: use std::iter; fn main() { let x: Option = None; // Repeat x 5 times if present, otherwise count […]

“El valor prestado no vive lo suficiente” parece culpar a lo incorrecto

Estoy contando el número de veces que aparece una palabra en Macbeth: use std::io::{BufRead, BufReader}; use std::fs::File; use std::collections::HashMap; fn main() { let f = File::open(“macbeth.txt”).unwrap(); let reader = BufReader::new(f); let mut counts = HashMap::new(); for l in reader.lines() { for w in l.unwrap().split_whitespace() { let count = counts.entry(w).or_insert(0); *count += 1; } } println!(“{:?}”, […]

¿Cómo convertir ‘struct’ a ‘& ‘?

Quiero enviar mi estructura a través de un TcpStream . Podría enviar String o u8 , pero no puedo enviar una estructura arbitraria. Por ejemplo: struct MyStruct { id: u8, data: [u8; 1024], } let my_struct = MyStruct { id: 0, data: [1; 1024] }; let bytes: &[u8] = convert_struct(my_struct); // how?? tcp_stream.write(bytes); Después de […]