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

news/2025/1/12 1:58:20/

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


http://www.ppmy.cn/news/1443458.html

相关文章

Java工程maven中排包exclude的操作

一、背景 在开发项目时依赖了新的jar包,结果工程启动时报错了,此时应该是包依赖冲突的问题。 二、确定冲突的依赖包 执行mvn clean install,通过报错信息来确定冲突的jar包信息 三、排除冲突包的方案 有两种冲突的情况: 1&am…

C#队列(Queue)的基本使用

概述 在编程中&#xff0c;队列&#xff08;Queue&#xff09;是一种常见的数据结构&#xff0c;它遵循FIFO&#xff08;先进先出&#xff09;的原则。在C#中&#xff0c;.NET Framework提供了Queue<T>类&#xff0c;它位于System.Collections.Generic命名空间下&#x…

maven-安装maven

解压 修改配置文件 apache-maven-3.6.1\conf\settings.xml 新建文件夹mvn_repo为仓库 配置镜像 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url><…

Python绘制3D曲面图

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 探索Python中绘制3D曲面图的艺术 在数据可视化的世界中&#xff0c;3D曲面图是一种强大的工…

C语言例题30:将一个正整数分解质因数

#include <stdio.h>void main() {int i;int x;printf("请输入一个正整数&#xff1a;");scanf("%d", &x);printf("%d ", x);//方法一&#xff1a;for (i 2; i < x; i) { //除数&#xff0c;从质数2开始while (x % i 0) { //能…

Spring Cloud Ribbon面试题

Spring Cloud Ribbon面试题 1. Ribbon基本概念和原理1.1 什么是Ribbon&#xff1f;1.2 Ribbon的工作原理是什么&#xff1f;1.3 Ribbon和其他负载均衡器有什么区别&#xff1f;1.4 Ribbon是如何与Eureka结合使用的&#xff1f; 2. 负载均衡策略2.1 Ribbon支持哪些负载均衡策略&…

Python爬虫要点和难点实例代码解析

学习Python爬虫是一个很好的选择,因为Python有很多强大的库可以帮助你进行网络数据的获取和处理。以下是一个简单的Python爬虫入门指南: 1. 了解HTTP协议:在开始编写爬虫之前,了解HTTP协议是很重要的,因为大多数爬虫都是通过HTTP来获取网页数据的。你需要了解HTTP请求和响…

Cocos Creator 3D物理引擎的物体编辑详解

前言 Cocos Creator是一款强大的游戏开发工具&#xff0c;其中包含了丰富的功能模块&#xff0c;其中之一就是3D物理引擎。通过物理引擎&#xff0c;开发者可以轻松地实现游戏中的物理效果&#xff0c;比如重力、碰撞、运动等。本文将详细介绍Cocos Creator中3D物理引擎的物体…