Ho un piccolo progetto e voglio incapsulare i campi di una struct e usare metodi implementati.Struttura pubblica/privata in Rust
├── src
├── main.rs
├── predator
└── prey
├── cycle.rs
└── mod.rs
cycle.rs
struct Prey {
name: String,
}
impl Prey {
pub fn new(n: String) -> Prey {
Prey { name: n }
}
pub fn get_name(&self) -> &str {
self.name.as_str()
}
}
che mi piacerebbe lasciare Prey
come private.
main.rs
use prey::cycle::Prey;
mod prey;
fn main() {
let pr = Prey::new("Hamster".to_string());
println!("Hello, world! {}", pr.get_name());
}
ottengo un errore:
error: struct `Prey` is private
so che se ho messo pub
prima struct Prey {}
, vado a prendere il risultato atteso. Sarò grato per una spiegazione, come, perché no e/o le migliori pratiche.
l'ultimo paragrafo mette tutto nel posto giusto, grazie. –