
Rust中结构体里面的属性默认是不支持修改的,而且默认不是pub的,要想修改的话,有两种方式,我以为和python里面的类似呢,但是还是需要一点技术含量的。如果想在引到外部修改,需要声明pub,如果想在impl中实现,需要将self参数修改为&mut self。
需要声明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 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"