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
- Una sola referencia de entrada implica que la salida presta de ella.
- Un método con
&selfpresta de self por defecto. - La ambigüedad es el único caso que exige escribirlo.
Palabras clave y builtins usados aquí
IteratorStringfnimplletselfstrstruct
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.
Paso 3 de 4 en Anotaciones de lifetime; paso 3 de 11 en Lifetimes y mutabilidad interior.