Desbordamiento de enteros en Rust
Rust no deja pasar un desbordamiento: eliges el comportamiento de forma explícita.
fn main() {
let big: u8 = 250;
println!("{:?}", big.checked_add(10));
println!("{}", big.saturating_add(10));
println!("{}", big.wrapping_add(10));
let (sum, carried) = big.overflowing_add(10);
println!("{sum} carried={carried}");
println!("{} {}", u8::MAX, i32::MIN);
}
Cómo funciona
checked_*devuelveNoneen vez de dar la vuelta.saturating_*se detiene en el límite del tipo.wrapping_*es la vuelta en complemento a dos, elegida por nombre.
Palabras clave y builtins usados aquí
fni32letu8
El intento, en números
- Líneas
- 10
- Caracteres a escribir
- 271
- Tokens
- 91
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 68 segundos.
Paso 4 de 6 en Variables y tipos; paso 4 de 39 en Fundamentos del lenguaje.