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

news/2024/5/19 14:09:24

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"


http://www.mrgr.cn/p/31672481

相关文章

Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板

Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板 Ubuntu 24.04 LTS (GNU/Linux 6.8-generic x86_64) 请访问原文链接:Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板,查看最新版。原创作品,转…

路由选择协议三剑客--BGP协议

一、背景 边界网关协议(Border Gateway Protocol, BGP)是用来处理像因特网规模大小的网络协议,能够妥善处理好不相关路由域间的多路连接协议。BGP一般用于企业和企业之间,也就是运营商骨干网的通信,一般使用在AS内或AS间通信,在大型企业网中实现的比较多。 内部网关协议只…

Multitouch 1.27.28 免激活版 mac电脑多点触控手势增强工具

Multitouch 应用程序可让您将自定义操作绑定到特定的魔术触控板或鼠标手势。例如,三指单击可以执行粘贴。通过执行键盘快捷键、控制浏览器的选项卡、单击鼠标中键等来改进您的工作流程。 Multitouch 1.27.28 免激活版下载 强大的手势引擎 精心打造的触控板和 Magic …

【分布式通信】NPKit,NCCL的Profiling工具

NPKit介绍 NPKit (Networking Profiling Kit) is a profiling framework designed for popular collective communication libraries (CCLs), including Microsoft MSCCL, NVIDIA NCCL and AMD RCCL. It enables users to insert customized profiling events into different C…

Ubuntu 22.04.4 LTS磁盘扩容

安装gpartedsudo apt updatesudo apt install gparted然后启动gpartedsudo gparted启动成功会完成一个新的对话框,直接调整磁盘大小的话会提示失败扩容查看只读文件系统的详细信息,点击Information(信息) 查看磁盘的挂载位置按顺序运行以下命令sudo -i mount -o remount -r…

K8s: 部署 kubernetes dashboard

部署 Dashboard K8s 官方有一个项目叫 dashboard,通过这个项目更方便监控集群的状态 官方地址: https://github.com/kubernetes/dashboard 通常我们通过命令行 $ kubectl get po -n kube-system 能够查看到集群所有的组件,但这样的方式比较不太直观 …

Jenkins 简述及其搭建

什么是持续集成?持续集成(CI)是在软件开发过程中自动化和集成许多团队成员的代码更改和更新的过程。在 CI 中,自动化工具在集成之前确认软件代码是有效且无错误的,这有助于检测错误并加快新版本的发布。什么是持续交付?持续交付 (CD) 是指每天多次将新软件投入生产,自动…

火山引擎VeDI:如何高效使用A/B实验,优化APP推荐系统

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群在移动互联网飞速发展的时代,用户规模和网络信息量呈现出爆炸式增长,信息过载加大了用户选择的难度,这样的背景下,推荐系统应运而生,为用户提供个性化的内容推荐。推荐系统在不断迭代…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(三)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 4 - 6节) P5《04.快速入门》 本节来实现一个 HelloWorld 效果: 1、打开编辑器,选择新建项目&…

查看svn密码

查看svn密码 下载TSvnPwd.exe, 这是一个压缩包 打开这个文件路径 C:\Users\浅笑\AppData\Roaming\Subversion\auth\svn.simple 把下载好压缩包,解压至这个目录中本文来自博客园,作者:浅笑,转载请注明原文链接:https://www.cnblogs.com/qx-blog/p/18159483

目标检测网络YOLO进化之旅

yolo系列网络在目标检测领域取得了巨大的成功, 尤其是在工程实践中, 以其出色的性能优势获得了广泛的应用落地。 YOLO的前3个版本是由同一个作者团队出品, 算是官方版本。 之后的版本都是各个研究团队自己改进的版本, 之间并无明…

amCharts使用

参考 代码如下<!DOCTYPE html> <html><head><script src="https://cdn.amcharts.com/lib/5/index.js"></script><script src="https://cdn.amcharts.com/lib/5/xy.js"></script><script src="https://c…

是时候了解替代FTP传文件的最优传输方案了!

目前越来越多的企业在寻找替代FTP传文件的方案,主要原因在于其固有的一些弊端,在现代企业数据传输需求中可能导致安全性、效率和可靠性方面的问题。以下是FTP的一些主要弊端: 1.数据传输不加密:FTP在传输过程中不加密数据,包括用户名和密码、命令和数据,这使得敏感信息容…

iOS 在OC旧项目中使用Swift进行混编

iOS 在OC旧项目中使用Swift进行混编 1、创建桥接文件 ​ 第一次在Swift创建OC文件&#xff0c;或者第一次OC创建Swift时&#xff0c;xcode会提示桥接&#xff0c;Creat Bridging Header即可,这个文件用于Swift调用OC文件&#xff0c;与OC调用Swift无关。 2、在TARGETS中设置D…

云原生Kubernetes: K8S 1.29版本 部署Nexus

目录 一、实验 1.环境 2.搭建NFS 3. K8S 1.29版本 部署Nexus 二、问题 1.volumeMode有哪几种模式 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注masterK8S master节点1.29.0192.168.204.8 node1K8S node节点1.29.0192.168.204.9node2K…

idea2023去除方法烦人提示

如果你遇到这样的问题请看 再看 已经没有了 我的idea版本

netstat tasklist taskkill配合使用

1.查找指定的端口号:netstat -ano | findstr 端口号 2.查找指定的进程号对应的程序名:tasklist /FI "PID eq 进程号" ,/FI "筛选器 eq 对应的值 " 或者 tasklist | findstr 进程号 或者 3.杀死指定进程:taskkill /t /f /pid 进程号

Centos的一些基础命令

CentOS是一个基于开源代码构建的免费Linux发行版&#xff0c;它由Red Hat Enterprise Linux (RHEL) 的源代码重新编译而成。由于 CentOS是基于RHEL构建的&#xff0c;因此它与RHEL具有非常类似的特性和功能&#xff0c;包括稳定性、安全性和可靠性。并且大部分的 Linux 命令在C…