typestar

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

  1. checked_* devuelve None en vez de dar la vuelta.
  2. saturating_* se detiene en el límite del tipo.
  3. wrapping_* es la vuelta en complemento a dos, elegida por nombre.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 4 de 6 en Variables y tipos; paso 4 de 39 en Fundamentos del lenguaje.

← Anterior Siguiente →