typestar

Visibilidad en Rust

pub(crate) y los campos privados son cómo un módulo cuida sus invariantes.

mod counter {
    pub struct Counter {
        count: u32,
        pub(crate) label: String,
    }

    impl Counter {
        pub fn new(label: &str) -> Self {
            Counter { count: 0, label: label.to_string() }
        }

        pub fn bump(&mut self) -> u32 {
            self.count += 1;
            self.count
        }

        pub fn count(&self) -> u32 {
            self.count
        }
    }
}

fn main() {
    let mut c = counter::Counter::new("stars");
    c.bump();
    c.bump();
    println!("{} = {}", c.label, c.count());
}

Cómo funciona

  1. pub(crate) es visible en este crate pero no afuera.
  2. Los campos privados obligan a construir con un constructor.
  3. Los accesores dejan a los internos libres para cambiar.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
28
Caracteres a escribir
403
Tokens
138
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 83 segundos.

Escribe este fragmento

Paso 3 de 3 en Módulos y visibilidad; paso 3 de 12 en Módulos, pruebas y macros.

← Anterior Siguiente →