Rust编程与项目实战-元组

【图书介绍】《Rust编程与项目实战》-CSDN博客

《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com)

Rust编程与项目实战_夏天又到了的博客-CSDN博客

8.2.1  元组的定义

元组是Rust的内置复合数据类型。Rust支持元组,而且元组是一个复合类型。我们知道,标量类型只能存储一种类型的数据。例如一个i32类型的变量只能存储一个数字。复合类型可以存储多个不同类型的数据。复合类型就像我们的菜篮子,里面可以放各种类型的菜。

元组可以将其他不同类型的多个值组合到一个复合类型中。元组还拥有一个固定的长度:无法在声明结束后增加或减少其中的元素数量。通常使用逗号分隔后放置到一对圆括号中创建一个元组。元组每个位置的值都有一个类型,这些类型不需要相同。元组是一个可以包含各种类型值的组合,是把几个类型组合到一起的最简单的方式。元组使用一对圆括号“()”来构造。如果元组中只包含一个元素,应该在后面添加一个逗号,以区分表达式和元组。

值得注意的是,元组有着固定的长度。而且一旦定义,就不能再增长或缩小。元组的下标从0开始。Rust中元组的定义很简单,就是使用一对圆括号把所有元素放在一起,元素之间使用逗号分隔。定义元组数据类型的时候也是一样的。在Rust语言中,元组的定义语法格式如下:

let tuple_name:(data_type1,data_type2,data_type3,…, data_typeN) = (value1,value2,value3,…,valueN);

定义元组时也可以忽略数据类型,比如:

let tuple_name = (value1,value2,value3,…,valueN);

但需要注意的是,如果显式指定了元组的数据类型,那么数据类型的个数必须和元组的个数相同,否则会报错。比如我们定义一个元组:

let tuple:(i32,f64,u8) = (-325,4.9,22);

8.2.2  元组的输出

如果要输出元组中的所有元素,必须使用{:?}格式化符。

fn main() {let tuple:(i32,f64,u8) = (-325,4.9,22);println!("{:?}",tuple);}

编译运行以上Rust代码,输出结果如下:

(-325, 4.9, 22)

仅仅使用下面的输出语句是不能输出元组中的元素的。

println!("{ }",tuple)

这是因为元组是一个复合类型,要输出复合类型的数据,必须使用println!("{:?}", tuple_name)。

8.2.3  访问元组中的单个元素

我们可以使用元组名.索引数字来访问元组中相应索引位置的元素,索引从0开始。例如下面这个拥有3个元素的元组:

let tuple:(i32,f64,u8) = (-325,4.9,22);

可以通过下面的方式访问各个元素:

tuple.0  // -325tuple.1  // 4.9tuple.2  // 22

下面的范例演示如何通过元组名.索引数的方式输出元组中的各个元素,代码如下:

fn main() {let tuple:(i32,f64,u8) = (-325,4.9,22);println!("integer is :{:?}",tuple.0);println!("float is :{:?}",tuple.1);println!("unsigned integer is :{:?}",tuple.2);}

编译运行以上Rust代码,输出结果如下:

integer is :-325float is :4.9unsigned integer is :2

再来看一个范例:

fn main() {//包含各种不同类型的元组let long_tuple = (1u8, 2u16, 3u32, 4u64, -1i8, -2i16, -3i32, -4i64, 0.1f32, 0.2f64, 'a', true,);//通过元组的下标来访问具体的值println!("long tuple first value: {}", long_tuple.0);println!("long tuple second value: {}", long_tuple.1);println!("long_tuple: {:?}", long_tuple);//元组也可以充当元组的元素let tuple_of_tuples = ((1u8, 2u16, 2u32), (4u64, -1i8), -2i16);//元组可以打印println!("tuple of tuples: {:?}", tuple_of_tuples);//但很长的元组无法打印//let too_long_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);//println!("too long tuple: {:?}", too_long_tuple);//创建单元素元组需要一个额外的逗号,这是为了和被括号包含的字面量进行区分println!("one element tuple: {:?}", (5u32,));println!("just an integer: {:?}", (5u32));
}

结果输出:

long tuple first value: 1
long tuple second value: 2
long_tuple: (1, 2, 3, 4, -1, -2, -3, -4, 0.1, 0.2, 'a', true)
tuple of tuples: ((1, 2, 2), (4, -1), -2)
one element tuple: (5,)
just an integer: 5

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

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

相关文章

Linux服务器运维宝典(一)

基础命令: ls:列出目录下的内容 ls [ -a -l -h] Linux路径当不使用选项和参数,直接使用 ls 命令本体,表示:以平铺形式,列出当前工作目录下的内容选项: -a:all 的意思,…

如何在Linux下安装和配置Docker

文章目录 安装前的准备在Debian/Ubuntu上安装Docker添加Docker仓库安装Docker验证安装 在CentOS/RHEL上安装Docker安装必要的软件包设置Docker仓库安装Docker启动Docker服务 Docker的基本使用拉取一个镜像运行一个容器 配置Docker创建Docker目录使用非root用户运行Docker 结语 …

山西农业大学20241029

08-VUE 一. 组件化开发项目1. 准备工作2. 开发思路3. 拆分页面图4. App.vue5. 项目优化 - 全局注册两个小组件 二. 组件三大组成部分细节1. 样式设置2. data必须是一个函数2.1 原因 一. 组件化开发项目 1. 准备工作 将准备好的App.vue中的内容复制到项目中将图片保存到assets下…

【Spring Boot】元注解

元注解 1.元注解1.1 Target1.2 Retention1.3 Inherited1.4 Documented1.5 interface 2.自定义注解2.1 创建自定义注解类2.2 实现业务逻辑2.3 使用自定义注解 1.元注解 元注解就是定义注解的注解,是 Java 提供的用于定义注解的基本注解。 注解 说明 Retention是注解…

如何使用 Vite 创建一个项目(Vue 或者 React)

如何使用 vite 创建一个 Vue 或者 React 项目? 打开终端,输入命令 npm create vitelatest外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 修改你需要的项目名 选择你要创建的项目的框架(Vue 还是 React 这是个问题&am…

医学影像基础:常见的医学影像学术语和概念

目录 1. 基本影像术语 2. X射线相关术语 3. CT相关术语 4. MRI相关术语 5. 超声相关术语 6. 核医学相关术语 7. 影像质量和技术术语 8. 临床影像术语 总结 在医学影像学中,有许多术语和概念是常用且重要的。了解这些术语和概念有助于更好地理解影像报告、与…

Linux 读者写者模型

1.背景概念 在编写多线程的时候,有一种情况是十分常见的。那就是,有些公共数据修改的机会比较少。相比较改写,它们读的机会反而高的多。这样就衍生出了读者写者模型,在这个模型中,有两类线程:读者和写者。读…

Linux补基础之:网络配置

目录 一、检查主机与虚拟机是否能正常通信 二、网络的连接模式 桥接模式 流程 特点 NAT模式 流程 特点 仅主机 流程 特点 三、修改静态IP 四、可能遇到的问题 防火墙 DNS 五、主机名更改 六、登录服务器 实际的大数据管理中,会有由很多服务器构成的…

使用AMD GPU和LangChain构建问答聊天机器人

Question-answering Chatbot with LangChain on an AMD GPU — ROCm Blogs 作者:Phillip Dang 2024年3月11日 LangChain是一个旨在利用语言模型强大功能来构建前沿应用程序的框架。通过将语言模型连接到各种上下文资源并基于给定的上下文提供推理能力,L…

蓝海创意云入选中国夏衍电影学会工业与科技影视专业委员会成员单位

党的二十届三中全会指出,科技自立自强是中国式现代化的有力保障。科技兴则民族兴,科技强则国家强。为深入的贯彻落实这一重要部署,推动工业与科技领域的融合发展充分发挥电影艺术在传播科技创新精神、展现工业发展成就方面的独特作用&#xf…

【制造业&流水线】流水线水泥袋检测系统源码&数据集全套:改进yolo11-HSPAN

改进yolo11-RFCBAMConv等200全套创新点大全:流水线水泥袋检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.24 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片…

景区导航地图怎么实现?基于LBS与3D GIS的智慧景区导航导览系统技术路线

随着经济的发展和人们物质生活水平改善,居民的旅游需求呈现多元化和个性化,自助旅游的人越来越多。许多游客在旅游行程中需要随时随地了解旅游景点有关的各类信息,如旅游景点介绍、推荐路线、地图导航等,合理规划和安排旅游线路。正是为了应对…

【Fargo】18:camera获取及预览

QCameraViewfinder.ui 这种报错是.ui的问题, QCameraViewfinder.ui 删掉,只用ZhbCamera.ui 就好了 Build started at 0:10... 1>------ B

【C++】--------- 内存管理

目录 C语言内存管理方式:malloc、calloc、realloc和free C内存管理方式 new和delete 操作内置类型 操作自定义类型 operator new与operator delete函数 new和delete的实现原理 定位new表达式的了解 ​编辑 内存泄漏 C语言内存管理方式:malloc、…

AI大模型与智算中心:构建未来智能社会的基石

随着人工智能技术的飞速发展,AI大模型(如GPT-4、BERT、LLAMA等)在自然语言处理、图像处理、音频处理等多个领域展现出了巨大的应用潜力。这些模型不仅提高了生产效率,更推动了新兴应用的不断涌现。然而,训练和应用这些…

Java Lock CyclicBarrier 总结

前言 相关系列 《Java & Lock & 目录》(持续更新)《Java & Lock & CyclicBarrier & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Java & Lock & CyclicBarrier & 总结》(学习总结…

VLAN聚合

VLAN聚合(VLAN Aggregation)是一种网络技术,用于在一个物理网络内通过多个VLAN(称为Sub-VLAN)隔离广播域,并将这些Sub-VLAN聚合成一个逻辑的VLAN(称为Super-VLAN) Super-VLAN&#…

期权懂|个股期权交易手数有限制吗?

本期让我懂 你就懂的期权懂带大家来了解,个股期权交易手数有限制吗?有兴趣的朋友可以看一下。期权小懂每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 个股期权交易手数有限制吗? 个股期权交易&#…

shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘

查找美国安全局漏洞 nww.nsa.gov(美国安全局官方网站) net参数使用 搜索指定的ip网段 shodan search --limit 10 --fields ip_str,port net:208.88.84.0/24 (老美国家安全局的一个网段)可能直接访问不太行,可以使用host参数,得到域名再去…

大型商场应急响应:SpringBoot技术实现

3系统分析 3.1可行性分析 通过对本大型商场应急预案管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本大型商场应急预案管理系统采用SSM框架&#xff0…