typestar

Reglas de elisión en Rust

La mayoría de las firmas no necesita anotación: tres reglas infieren el caso obvio.

struct Snippet {
    text: String,
}

impl Snippet {
    fn first_word(&self) -> &str {
        self.text.split_whitespace().next().unwrap_or("")
    }

    fn lines(&self) -> impl Iterator<Item = &str> {
        self.text.lines()
    }
}

fn trimmed(text: &str) -> &str {
    text.trim()
}

fn main() {
    let s = Snippet { text: "let x = 1;\nlet y = 2;".to_string() };
    println!("{}", s.first_word());
    println!("{}", s.lines().count());
    println!("{:?}", trimmed("  padded  "));
}

Cómo funciona

  1. Una sola referencia de entrada implica que la salida presta de ella.
  2. Un método con &self presta de self por defecto.
  3. La ambigüedad es el único caso que exige escribirlo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
24
Caracteres a escribir
437
Tokens
150
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 86 segundos.

Escribe este fragmento

Paso 3 de 4 en Anotaciones de lifetime; paso 3 de 11 en Lifetimes y mutabilidad interior.

← Anterior Siguiente →