Cómo convertir tipos numéricos de forma segura e idiomática en Rust
¡Hola! Recientemente comencé a aprender Rust y me encontré con el problema de convertir números. En otros lenguajes (C++, Python) simplemente escribía `(int)float_var` o `int(float_var)`, y funcionaba. Pero en Rust el compilador se queja constantemente.
Aquí hay un ejemplo de código que intento escribir:
```rust
fn main() {
let a: u8 = 10;
let b: u16 = 20;
let sum = a + b; // Error: cannot add `u16` to `u8`
let pi: f64 = 3.14159;
let int_pi: u32 = pi; // Error: expected `u32`, found `f64`
let x: i32 = 100;
let y: u32 = x; // Error: expected `u32`, found `i32`
}
```
Entiendo que Rust está fuertemente tipado, pero ¿cómo realizar estas conversiones correctamente? He oído sobre `as`, pero se comporta de manera peligrosa en caso de desbordamiento. ¿Existen formas seguras e idiomáticas? Necesito:
1. Convertir entre enteros de diferente tamaño (u8 -> u16, i32 -> u64)
2. Convertir entre tipos con signo y sin signo
3. Convertir números de punto flotante a enteros y viceversa
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Rust para aprendizaje automático: posibilidades y limitaciones