Deref en un newtype en Rust
Deref deja que una envoltura reenvíe los métodos del tipo interno sin escribir ninguno.
use std::ops::Deref;
struct Handle(String);
impl Deref for Handle {
type Target = String;
fn deref(&self) -> &String {
&self.0
}
}
fn main() {
let handle = Handle("ada_lovelace".to_string());
println!("{}", handle.len());
println!("{}", handle.to_uppercase());
println!("{}", handle.starts_with("ada"));
println!("{}", *handle);
}
Cómo funciona
derefdevuelve una referencia al valor envuelto.- Las llamadas a métodos atraviesan entonces la envoltura.
- Úsalo para punteros inteligentes y newtypes, no para herencia.
Palabras clave y builtins usados aquí
Stringfnforimplletselfstructtypeuse
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 334
- Tokens
- 111
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 63 segundos.
Paso 3 de 4 en Operadores y acceso; paso 14 de 19 en Traits y genéricos.