rust中结构体的属性默认是不能修改的,要想修改可以有两种方式

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

第一种在impl中修改

需要声明self为可变引用,然后通过在impl中使用self修改

rust 复制代码
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方法:

rust 复制代码
    // 创建结构体
    let mut r = React::new(String::from("2"), String::from("3"));
    r.set_height(String::from("10000"));

修改后的结果:

rust 复制代码
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后,再使用 . 属性的方式直接修改:

rust 复制代码
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");

修改后的结果:

rust 复制代码
warning: `day4` (bin "day4") generated 2 warnings
    Finished dev [unoptimized + debuginfo] target(s) in 0.00s
     Running `target/debug/day4`
React height is:"6666"
相关推荐
海兰1 分钟前
【springboot】gradle快速镜像配置
spring boot·笔记·后端
swear016 分钟前
【VSCODE 插件 rust-analyzer 使用】打开文件夹
ide·vscode·rust
武超杰6 分钟前
SpringBoot 整合 Spring Security 实现权限控制
spring boot·后端·spring
fengci.6 分钟前
php反序列化(复习)(第四章)
android·开发语言·学习·php·android studio
Jasmine_llq6 分钟前
《B3923 [GESP202312 二级] 小杨做题》
开发语言·状态标记算法·顺序输入输出算法·递推迭代算法·循环遍历算法·条件终止算法·累加求和算法
whatever who cares9 分钟前
android中,全局管理数据/固定数据要不要放一起?
android·java·开发语言
XMYX-013 分钟前
06 - Go 的切片、字典与遍历:从原理到实战
后端·golang
liu****14 分钟前
第15届省赛蓝桥杯大赛C/C++大学B组
开发语言·数据结构·c++·算法·蓝桥杯·acm
架构师专栏15 分钟前
比 MQ 更轻的异步方案:Spring 内置的这个隐藏功能,很多人还不知道
后端
林木8821 分钟前
Druid Kafka 数据源消费到 Segment 生成全链路深度分析
后端