Métodos por defecto en Rust
Un trait puede aportar comportamiento; los implementadores solo escriben lo que difiere.
trait Step {
fn title(&self) -> String;
fn lines(&self) -> usize {
1
}
fn label(&self) -> String {
format!("{} ({} lines)", self.title(), self.lines())
}
}
struct Snippet;
struct Script;
impl Step for Snippet {
fn title(&self) -> String {
"Filter with WHERE".to_string()
}
}
impl Step for Script {
fn title(&self) -> String {
"config_check.rs".to_string()
}
fn lines(&self) -> usize {
84
}
}
fn main() {
println!("{}", Snippet.label());
println!("{}", Script.label());
}
Cómo funciona
- Un método por defecto puede llamar a los requeridos.
- Los implementadores lo sobrescriben solo si lo necesitan.
- Así los traits se mantienen pequeños en el punto de uso.
Palabras clave y builtins usados aquí
Stringfnforimplselfstructtraitusize
El intento, en números
- Líneas
- 34
- Caracteres a escribir
- 476
- Tokens
- 147
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 88 segundos.
Paso 2 de 3 en Traits; paso 2 de 19 en Traits y genéricos.