【Rust练习】10.元组

2024-08-25 16:44
文章标签 rust 练习 元组

本文主要是介绍【Rust练习】10.元组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

练习题来自:https://practice-zh.course.rs/compound-types/tuple.html

1 元组中的元素可以是不同的类型。元组的类型签名是 (T1, T2, …), 这里 T1, T2 是相对应的元组成员的类型.

fn main() {let _t0: (u8,i16) = (0, -1);// 元组的成员还可以是一个元组let _t1: (u8, (i16, u32)) = (0, (-1, 1));// 填空让代码工作let t: (u8, __, i64, __, __) = (1u8, 2u16, 3i64, "hello", String::from(", world"));
}

我在这里说一下我对元组的理解,这个东西类似于Cunion,也就是C++variant,这两个类型我都有文章讲过:
【C++】union
【C++】std::variant

至于这道题,很简答,写出对应的类型就行:

fn main() {let _t0: (u8,i16) = (0, -1);// 元组的成员还可以是一个元组let _t1: (u8, (i16, u32)) = (0, (-1, 1));// 填空让代码工作let t: (u8, u16, i64, &str, String) = (1u8, 2u16, 3i64, "hello", String::from(", world"));
}

2 🌟 可以使用索引来获取元组的成员

// 修改合适的地方,让代码工作
fn main() {let t = ("i", "am", "sunface");assert_eq!(t.1, "sunface");
}

surface是第三个,索引是2

fn main() {let t = ("i", "am", "sunface");assert_eq!(t.2, "sunface");
}

3 🌟 过长的元组无法被打印输出

// 修复代码错误
fn main() {let too_long_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);println!("too long tuple: {:?}", too_long_tuple);
}

目前仅仅为大小不超过 12 的元组实现了 Debug,更长的元组未实现(而且可能永远无法实现了)。

fn main() {let too_long_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);let sup: (i32, i32) = (12, 13);println!("too long tuple: {:?} {:?}", too_long_tuple, sup);
}

4 使用模式匹配来解构元组

fn main() {let tup = (1, 6.4, "hello");// 填空let __ = tup;assert_eq!(x, 1);assert_eq!(y, "hello");assert_eq!(z, 6.4);
}

其实就是给对应位置的参数起个别名。

fn main() {let tup = (1, 6.4, "hello");// 填空let (x, z, y) = tup;assert_eq!(x, 1);assert_eq!(y, "hello");assert_eq!(z, 6.4);
}

5 🌟🌟 解构式赋值

fn main() {let (x, y, z);// 填空__ = (1, 2, 3);assert_eq!(x, 3);assert_eq!(y, 1);assert_eq!(z, 2);
}

同上

fn main() {let (x, y, z);// 填空(y, z, x) = (1, 2, 3);assert_eq!(x, 3);assert_eq!(y, 1);assert_eq!(z, 2);
}

6 🌟🌟 元组可以用于函数的参数和返回值

fn main() {// 填空,需要稍微计算下let (x, y) = sum_multiply(__);assert_eq!(x, 5);assert_eq!(y, 6);
}fn sum_multiply(nums: (i32, i32)) -> (i32, i32) {(nums.0 + nums.1, nums.0 * nums.1)
}
fn main() {// 填空,需要稍微计算下let (x, y) = sum_multiply((2, 3));assert_eq!(x, 5);assert_eq!(y, 6);
}fn sum_multiply(nums: (i32, i32)) -> (i32, i32) {(nums.0 + nums.1, nums.0 * nums.1)
}

这篇关于【Rust练习】10.元组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106093

相关文章

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1(高级消息队列协议)是一种网络协议,它允许遵从该协议的客户端(Publisher或者Consumer)应用程序与遵从该协议的消息中间件代理(Broker,如RabbitMQ)进行通信。 AMQP 0-9-1模型的核心概念包括消息发布者(producers/publisher)、消息(messages)、交换机(exchanges)、

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

MySql 事务练习

事务(transaction) -- 事务 transaction-- 事务是一组操作的集合,是一个不可分割的工作单位,事务会将所有的操作作为一个整体一起向系统提交或撤销请求-- 事务的操作要么同时成功,要么同时失败-- MySql的事务默认是自动提交的,当执行一个DML语句,MySql会立即自动隐式提交事务-- 常见案例:银行转账-- 逻辑:A给B转账1000:1.查询

html css jquery选项卡 代码练习小项目

在学习 html 和 css jquery 结合使用的时候 做好是能尝试做一些简单的小功能,来提高自己的 逻辑能力,熟悉代码的编写语法 下面分享一段代码 使用html css jquery选项卡 代码练习 <div class="box"><dl class="tab"><dd class="active">手机</dd><dd>家电</dd><dd>服装</dd><dd>数码</dd><dd

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

第二十四章 rust中的运算符重载

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust中的运算符重载 目录 注意一、前言二、基本使用三、常用运算符四、通用约束 一、前言 C/C++中有运算符重载这一概念,它的目的是让即使含不相干的内容也能通过我们自定义的方法进行运算符操作运算。 比如字符串本身是不能相加的,但由于C++中的String重载了运算符+,所以我们就可以将两个字符串进行相加、但实际

014.Python爬虫系列_解析练习

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优

如何快速练习键盘盲打

盲打是指在不看键盘的情况下进行打字,这样可以显著提高打字速度和效率。以下是一些练习盲打的方法: 熟悉键盘布局:首先,你需要熟悉键盘上的字母和符号的位置。可以通过键盘图或者键盘贴纸来帮助记忆。 使用在线打字练习工具:有许多在线的打字练习网站,如Typing.com、10FastFingers等,它们提供了不同难度的练习和测试。 练习基本键位:先从学习手指放在键盘上的“家位”开始,通常是左手的

anaconda3下的python编程练习-csv翻译器

相关理解和命令 一、环境配置1、conda命令2、pip命令3、python命令 二、开发思路三、开发步骤 一、环境配置 1、conda命令 镜像源配置 conda config --show channels //查看镜像源conda config --remove-key channels //删除添加源,恢复默认源#添加镜像源conda config --ad