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
pub(crate)es visible en este crate pero no afuera.- Los campos privados obligan a construir con un constructor.
- Los accesores dejan a los internos libres para cambiar.
Palabras clave y builtins usados aquí
Stringcratefnimplletmodmutpubselfstrstructu32
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.
Paso 3 de 3 en Módulos y visibilidad; paso 3 de 12 en Módulos, pruebas y macros.