Rust中结构体里面的属性默认是不支持修改的,而且默认不是pub的,要想修改的话,有两种方式,我以为和python里面的类似呢,但是还是需要一点技术含量的。如果想在引到外部修改,需要声明pub,如果想在impl中实现,需要将self参数修改为&mut self。
第一种在impl中修改
需要声明self为可变引用,然后通过在impl中使用self修改
pub struct React {
width: String,
height: String,
}
impl React {
pub fn new(w: String, h: String) -> Self {
React { width: w, height: h }
}
pub fn set_height(&mut self, h: String) {
self.height = h;
}
}
修改的时候,直接创建实例对象,然后调用set_height方法:
// 创建结构体
let mut r = React::new(String::from("2"), String::from("3"));
r.set_height(String::from("10000"));
修改后的结果:
warning: `day4` (bin "day4") generated 3 warnings
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `target/debug/day4`
React height is:"10000"
第二种声明pub
声明pub后,再使用 . 属性的方式直接修改:
pub struct React {
pub width: String,
pub height: String,
}
let mut r = React::new(String::from("2"), String::from("3"));
// r.set_height(String::from("10000"));
r.height = String::from("6666");
修改后的结果:
warning: `day4` (bin "day4") generated 2 warnings
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/day4`
React height is:"6666"