Mam mały projekt i chcę enkapsulować pola struct i korzystać z zaimplementowanych metod.Struktura publiczna/prywatna w 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()
}
}
które chciałbym zostawić Prey
jako prywatne.
main.rs
use prey::cycle::Prey;
mod prey;
fn main() {
let pr = Prey::new("Hamster".to_string());
println!("Hello, world! {}", pr.get_name());
}
pojawia się błąd:
error: struct `Prey` is private
wiem, że jeśli mogę umieścić pub
przed struct Prey {}
, będę uzyskać oczekiwany rezultat. Będę wdzięczny za wyjaśnienie, jak, dlaczego nie i/lub najlepsze praktyki.
ostatni paragraf umieścić wszystko na właściwym miejscu, dzięki. –