05 Rust 结构体

结构体

Rust 中的结构体(Struct)与元组(Tuple)都可以将若干个类型不一定相同的数据捆绑在一起形成整体,但结构体的每个成员和其本身都有一个名字,这样访问它成员的时候就不用记住下标了。

元组常用于非定义的多值传递,而结构体用于规范常用的数据结构。结构体的每个成员叫做"字段"。

// 引入调试库用于输出结构体
#[derive(Debug)]
struct Person {name: String,age: u8,
}// 结构体 impl 块可以写几次,效果相当于它们内容的拼接!
impl Person {// 结构体方法fn sayhello(&self) {println!("Hello I am {}, {}", self.name, self.age);}// 结构体关联函数, 没有 &self 参数, 不依赖实例fn create(name: String, age: u8) -> Person {// 当 value 和 key 名称相同, 可简写let p = Person { name: name, age };p}
}fn main() {let mut p1 = Person::create("Jim".to_string(), 18);p1.age += 1;p1.sayhello();// 更新部分, 其余一致let p2 = Person {name: "Tom".to_string(),..p1};// 使用占位符 {:#?} 或 {:?} 输出结构体 println!("{:#?}", p2);
}

元组结构

struct Color(i32, i32, i32);let black = Color(0, 0, 0);

单元类结构

单元类结构是没有任何字段的结构体

struct Unit;
let u = Unit;

结构数据的所有权

结构体必须掌握字段值所有权,因为结构体失效的时候会释放所有字段。这就是为什么本章的案例中使用了 String 类型而不使用 &str 的原因。

但这不意味着结构体中不能定义引用型字段,这需要通过"生命周期"机制来实现。但现在还难以说明"生命周期"概念,所以只能在后面章节说明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/229963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hive】——DDL(DATABASE)

1 概述 2 创建数据库 create database if not exists test_database comment "this is my first db" with dbproperties (createdByAllen);3 描述数据库信息 describe 可以简写为desc extended 可以展示更多信息 describe database test_database; describe databa…

技术分享 | 接口测试价值与体系

如果把测试简单分为两类,那么就是客户端测试和服务端测试。移动端的测试包括 UI 测试,兼容性测试等,服务端测试包括接口测试。接口测试检查数据的交换、传递和控制管理过程。它绕过了客户端,直接对服务端进行测试。 接口测试的价值…

链表之带头双向循环链表(C语言版)

我们之前已经介绍过链表的知识了,这里我们直接开始实现带头双向循环链表 数据结构之单链表(不带头单向非循环链表)-CSDN博客 第一步:定义结构体 //定义结构体 typedef int SLTDateType; typedef struct Listnode {SLTDateType d…

字符设备驱动框架的编写

一. 简介 我们在学习裸机或者 STM32 的时候关于驱动的开发就是初始化相应的外设寄存器,在 Linux 驱动开发中,肯定也是要初始化相应的外设寄存器。 只是在 Linux 驱动开发中, 我们需要按照其规定的框架来编写驱动,所以说学 …

【HTML5、CSS3】新增特性总结!

文章目录 23 HTML5 新增特性23.1 语义化标签23.2 多媒体标签23.2.1 视频<video>标签23.2.2 音频<audio>标签 23.3 input属性值23.4 表单属性 24 CSS3 新增特性24.1 属性选择器24.2 结构伪类选择器24.2.1 选择第n个元素24.2.2 常用的6个结构伪类选择器 24.3 伪元素选…

云计算技术----数据可视化

一. 单选题&#xff08;共9题&#xff0c;63.9分&#xff09; (单选题)下列关于数据可视化的描述,哪个是错误的? A. 数据可视化是指将大型数据集中的数据以图形图像形式表示 B. 利用数据分析和开发工具发现其中未知信息的处理过程 C. 数据可视化技术的基本思想是将数据库中每一…

如何用Python向图像中加入噪声

我们在做机器视觉项目的过程中&#xff0c;有的时候需要向图像中加入噪声。Pytorch本身不支持类似的功能&#xff0c;如果自己写的话&#xff0c;不但麻烦&#xff0c;而且容易出错。好在skimage支持这个功能。代码如下&#xff1a; import skimage import matplotlib.pyplot …

抚琴成一快-布鲁斯

布鲁斯 0.理论1.音阶1.大调布鲁斯音阶2.小调布鲁斯音阶 1.基础1.shuffle节奏制音2.十二小节3.和弦4.小调五声音阶 2.演奏手法1.Lamp and Lamp1.基础和声进行2.进阶和声进行1.quick change2. call and respond:3.回旋句 2.Box1.基础和声进行2.进阶和声进行 3.Boogie1.基础节奏2.…

【教学类-06-19】20231217 (按“列”正序题)X-Y之间“加法题+题”(1页最多0-13。填满115空格)

作品展示&#xff1a;按列排序&#xff0c;从小到大正序&#xff08;没有大量空格&#xff09; 1.会有空格做分割线&#xff0c;上面部分是所有的小到大正序加法&#xff0c;下面的部分就是正序题目的不重复随机抽取题目&#xff08;乱序题&#xff09; 2、包含分割空格&…

html懒人加载实现

在HTML中&#xff0c;懒加载&#xff08;Lazy Load&#xff09;是一种延迟加载图片或其他资源的技术&#xff0c;它可以提高页面的加载速度和性能。下面是一种实现懒加载的方法&#xff1a; 设置默认占位图片&#xff1a;在HTML中&#xff0c;为要延迟加载的图片设置一个默认的…

react-next. 配置title信息

文档&#xff1a;元数据 1、静态数据 import type { Metadata } from nextexport const metadata: Metadata {title: ...,description: ..., }export default function Page() {} 2、动态数据 import type { Metadata, ResolvingMetadata } from nexttype Props {params:…

力扣190. 颠倒二进制位

位运算 思路&#xff1a; 逐位颠倒&#xff0c;第 i 位二进制移动到 (31 - i) 位上 result | (n & 1) << (31 - i); class Solution { public:uint32_t reverseBits(uint32_t n) {uint32_t result 0;for (int i 0; i < 32 && n > 0; i) {result | (…

实验记录:深度学习模型收敛速度慢有哪些原因

深度学习模型收敛速度慢有哪些原因&#xff1f; 学习率设置不当&#xff1a; 学习率是算法中一个重要的超参数&#xff0c;它控制模型参数在每次迭代中的更新幅度。如果学习率过大&#xff0c;可能会导致模型在训练过程中的振荡&#xff0c;进而影响到收敛速度&#xff1b;如果…

【Windows】windows11右键默认显示更多选项的办法

Windows11系统的右键菜单显示&#xff0c;需要多点一次“显示更多选项”才能看到所有菜单内容&#xff0c;按下面步骤简单设置一下就能恢复成Windows经典的右键菜单显示。 1. 2.输入命令【reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a…

React与AJAX

大家好&#xff0c;欢迎来到 《React与AJAX》 课程。在这一课中&#xff0c;我们将学习如何在 React 中使用 AJAX。 什么是 AJAX&#xff1f; AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种使用 JavaScript 在浏览器和服务器之间进行异步通信的技术。A…

Redis - RDB与AOF持久化技术

Redis 持久化技术 RDB 是默认持久化方式&#xff0c;但 Redis 允许 RDB 与 AOF 两种持久化技术同时 开启&#xff0c;此时系统会使用 AOF 方式做持久化&#xff0c;即 AOF 持久化技术的优先级要更高。同样的道 理&#xff0c;两种技术同时开启状态下&#xff0c;系…

css的元素显示模式(有单行文字垂直居中,侧边栏等案例)

目录 1. 什么是元素的显示模式 2. 元素显示模式的类型 块元素 行内元素 行内块元素 3. 元素显示模式的转换 4.文字垂直居中 5.具体实现案例 1. 什么是元素的显示模式 定义&#xff1a;元素显示模式就是元素&#xff08;标签&#xff09;以什么方式进行显示&#xff0c;…

Mysql 压测

目录 1、mysql查看数据大小 2、mysql配置优化 3、mysql压力测试 4、mysql主从复制原理 5、mysql主从延迟如何解决 6、主从切换操作 1、mysql查看数据大小 怎样查询总数据量 SELECT table_schema AS Database,CONCAT(ROUND(SUM((data_length index_length) / (1024 * 102…

HarmonyOS鸿蒙应用开发——数据持久化Preferences封装

文章目录 数据持久化简述基本使用与封装测试用例参考 数据持久化简述 数据持久化就是将内存数据通过文件或者数据库的方式保存到设备中。HarmonyOS提供两两种持久化方案&#xff1a; Preferences&#xff1a;主要用于保存一些配置信息&#xff0c;是通过文本的形式存储的&…

TCP/IP详解——FTP 协议,Telnet协议

文章目录 1. FTP 协议1.1 FTP的应用1.2 FTP传输文件的过程1.3 FTP传输模式1.4 主动模式&#xff08;Active Mode&#xff09;1.5 Active Mode 抓包分析1.6 被动模式&#xff08;Passive Mode&#xff09;1.7 Passive Mode 抓包分析 2. Telnet 协议2.1 Telnet 概念2.2 Telnet 协…