{ {{ mod student{
pub struct student{
pub name:&'static str,
id:u64
}
impl student{
pub fn new(name:&'static str)->student{
student{
name,
id:1, //假设 id 的值通过随机产生
}
}
// 只能这样做 ?
pub fn get_id(&self)->u64{
self.id
}
}
}
fn main(){
let mut s=student::student::new("my name");
} }} }
如果在 字段 id 前加上 pub,则有可能 id 的值被无意中修改,这里 id 的含义列相当于一个唯一的编号,只能在关联函数 new 中产生,但是我又希望调用方 如 main 可以用只读的方式来访问 id, 是不是在RUST 中只能向像上面一样加上 get_id 这样的方法,多谢
1
共 3 条评论, 1 页
评论区
写评论对以下内容的回复:
感谢回复,无法编译上面的代码
可以使用Cell,因为你的id是基本类型,实现了Copy trait,故可以用Cell。如果是非基本类型,比如String,使用RefCell。
Rust里无法控制字段的可变性,所以应该就只有不pub出id才能实现这个功能.