我有一个小项目,希望封装结构体的字段并使用已实现的方法。
├── 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()
}
}
我希望将Prey
设置为私有。
main.rs
use prey::cycle::Prey;
mod prey;
fn main() {
let pr = Prey::new("Hamster".to_string());
println!("Hello, world! {}", pr.get_name());
}
I get an error:
error: struct `Prey` is private
我知道如果在
struct Prey {}
前加上 pub
,我将得到期望的结果。请您解释一下为什么需要这样做,以及最佳实践是什么。