Saltar al contenido
En esta página

Flujo de Control

If / Else

if x > 10 {
    print("big")
} else if x > 5 {
    print("medium")
} else {
    print("small")
}

If como Expresión

if puede usarse como una expresión que devuelve un valor:

let label = if x > 10 { "big" } else { "small" }

let abs = if n < 0 { -n } else { n }

If Let

Combina coincidencia de patrones y vinculación en una sola expresión. Útil para opcionales y enums:

let maybe_val: int? = 42

if let val = maybe_val {
    print("Got value: {val}")
} else {
    print("No value")
}

Con patrones de enum:

enum Shape {
    Circle(f64),
    Square(f64),
}

let s = Shape::Circle(5.0)

if let Shape::Circle(r) = s {
    print("Circle with radius {r}")
}

Match

Coincidencia de patrones con verificación exhaustiva:

match x {
    0 => print("zero"),
    1 => print("one"),
    n if n < 0 => print("negative"),
    _ => print("other"),
}

Match como Expresión

let description = match status {
    "ok" => "Success",
    "err" => "Failure",
    _ => "Unknown",
}

Múltiples Patrones

match key {
    'w' | 'W' => move_up(),
    's' | 'S' => move_down(),
    'q' => quit(),
    _ => {},
}

Cláusulas Guard

match value {
    n if n < 0 => "negative",
    0 => "zero",
    n if n > 100 => "large",
    _ => "normal",
}

Desestructuración de Enum

enum Result {
    Ok(int),
    Err(str),
}

match result {
    Result::Ok(value) => print("Success: {value}"),
    Result::Err(msg) => print("Error: {msg}"),
}

Desestructuración de Struct

match point {
    Point { x: 0, y: 0 } => print("origin"),
    Point { x, y } if x == y => print("diagonal"),
    Point { x, y } => print("({x}, {y})"),
}

Patrones Anidados

match event {
    Event::Click { pos: Point { x, y }, button } if button == Button::Left => {
        print("clicked at ({x}, {y})")
    },
    _ => {},
}

Consulta Coincidencia de Patrones para la referencia completa de patrones.

Bucles

Bucle For con Rangos

// Exclusive range: 0 to 9
for i in 0..10 {
    print(i)
}

// Inclusive range: 0 to 10
for i in 0..=10 {
    print(i)
}

Bucle For con Colecciones

let items = ["apple", "banana", "cherry"]

for item in items {
    print(item)
}

Bucle For con Desestructuración

let pairs = [(1, "one"), (2, "two"), (3, "three")]

for (num, name) in pairs {
    print("{num}: {name}")
}

Bucle While

let mut count = 0
while count < 10 {
    print(count)
    count += 1
}

While Let

Coincidencia de patrones en una condición de bucle:

while let Some(item) = queue.pop() {
    process(item)
}

Loop (Infinito)

loop {
    let input = read_line()
    if input == "quit" {
        break
    }
    process(input)
}

Break y Continue

for i in 0..100 {
    if i % 2 == 0 {
        continue  // skip even numbers
    }
    if i > 50 {
        break     // stop at 50
    }
    print(i)
}

Buscar en Zolo

9 resultados

enespt-br