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 warningsFinished dev [unoptimized + debuginfo] target(s) in 0.01sRunning `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 warningsFinished dev [unoptimized + debuginfo] target(s) in 0.00sRunning `target/debug/day4`
React height is:"6666"