typestar

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

  1. deref devuelve una referencia al valor envuelto.
  2. Las llamadas a métodos atraviesan entonces la envoltura.
  3. Úsalo para punteros inteligentes y newtypes, no para herencia.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 4 en Operadores y acceso; paso 14 de 19 en Traits y genéricos.

← Anterior Siguiente →