![](https://img-blog.csdnimg.cn/20210704075602985.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Rust 学习日记
文章平均质量分 62
Rust 学习日记 0基础学会Rust,从小白变成大牛
uuuhhhyyy
这个作者很懒,什么都没留下…
展开
-
Rust番外——0.1+0.2为什么不等于0.3 (上篇)
学习更多Rust内容,请关注微信公众号:Rust学习日记0x00 开篇0.1 + 0.2 = 0.3这个等式,在数学里是没有任何问题的。但是为什么我们使用Rust求解时得到的结果却不是0.3呢?这篇文章,我们就深刻的剖析一下。0x01 先看结果首先,我们先用代码看下使用Rust计算0.1 + 0.2 的结果,如下图:其结果是0.30000000000000004。那这是什么原因呢?其实这与计算机是如何保存数据有关系。0x02 进制与转换要寻求原因,这里有几个概念要先了解下。进制我们在生活原创 2022-01-29 16:30:21 · 1153 阅读 · 0 评论 -
Rust交叉编译——Windows To Linux
0x00 开篇什么是交叉编译?可能有的同学不理解。我这里简单介绍下,所谓交叉编译,就是在一个平台上可以编译生成另一个平台的可执行文件。这节课主要介绍如何在Windows系统上编译生成Linux系统的可执行文件。0x01 准备工作我们跨平台编译,要准备如下一些前期工作。操作环境Windows 11VS2012(VS2019我也测试过)CLionRust 1.56.1CentOS 7添加Target这里我所用的Linux是64位的,所以我这里需要添加x86_64-unknown-lin原创 2021-12-15 16:49:09 · 3012 阅读 · 1 评论 -
Rust实战——注册表之自定义Windows11任务栏位置(上)
0x00 说在前面的废话2021年10月5日这一天注定是不寻常的一天…因为“巨硬”发布了Windows 11。本人在第一时间装了Windows 11。体验还算不错,下面是windows 11的开始菜单啦。感觉又要适应一段时间了。但是发现了一个问题,这货!任务栏不能改!位!置!这难不倒我吧,,上网查资料发现可以通过修改注册表来更改任务栏的位置。看到这里,要不咱们就用Rust来大干一场,正好练习下Rust的winapi。后来…就有了这篇文章。本文也正好借此机会说下Rust使用winapi的一些坑。如果您是一原创 2021-10-13 13:20:00 · 1041 阅读 · 0 评论 -
Rust语言编程实例100题-078
Rust语言编程实例100题-078题目:Rust迭代器专项练习。迭代器模式是将遍历数据集合的行为抽象为单独的迭代对象,这样在遍历集合时可以把集合中所有元素按顺序传递给处理逻辑。要求:使用迭代器中filter适配器,获取1-100这100个数中能被7整除或者能被9整除的数并输出。**程序分析:**无。知识点:Rust迭代器参考程序代码:fn main() { let num: Vec<i32> = (1..=100).collect(); let result: Ve原创 2021-09-16 18:37:53 · 236 阅读 · 0 评论 -
Rust语言编程实例100题-077
Rust语言编程实例100题-077题目:Rust迭代器专项练习。迭代器模式是将遍历数据集合的行为抽象为单独的迭代对象,这样在遍历集合时可以把集合中所有元素按顺序传递给处理逻辑。要求:使用迭代器中take适配器,获取数组[1,5,7,9,11,23,24]的前5个元素并输出。**程序分析:**无。知识点:Rust迭代器参考程序代码:fn main() { let num: Vec<i32> = vec![1, 5, 7, 9, 11, 23, 24]; let res原创 2021-09-15 13:02:15 · 188 阅读 · 0 评论 -
Rust语言编程实例100题-076
Rust语言编程实例100题-076题目:Rust迭代器专项练习。迭代器模式是将遍历数据集合的行为抽象为单独的迭代对象,这样在遍历集合时可以把集合中所有元素按顺序传递给处理逻辑。要求:使用迭代器中的collect消费器和map适配器,将数组[1,5,7,9,11,23,24]每个数字乘以3 后输出。**程序分析:**无。知识点:Rust迭代器参考程序代码:fn main() { let num: Vec<i32> = vec![1, 5, 7, 9, 11, 23, 24];原创 2021-09-14 22:29:57 · 227 阅读 · 0 评论 -
Rust语言编程实例100题-075
Rust语言编程实例100题-075题目:Rust迭代器专项练习。迭代器模式是将遍历数据集合的行为抽象为单独的迭代对象,这样在遍历集合时可以把集合中所有元素按顺序传递给处理逻辑。要求:使用迭代器中的any消费器,求数组[1,5,7,9,11,23,24]个数中,是否存在偶数。**程序分析:**无。知识点:Rust迭代器参考程序代码:fn main() { let num: Vec<i32> = vec![1, 5, 7, 9, 11, 23, 24]; let res原创 2021-09-13 12:40:32 · 297 阅读 · 0 评论 -
Rust语言编程实例100题-074
Rust语言编程实例100题-074题目:Rust迭代器专项练习。迭代器模式是将遍历数据集合的行为抽象为单独的迭代对象,这样在遍历集合时可以把集合中所有元素按顺序传递给处理逻辑。要求:使用迭代器中的sum消费器,求1-100的和。**程序分析:**无。知识点:Rust迭代器参考程序代码:fn main() { let num: Vec<i32> = (1..=100).collect(); let sum: i32 = num.iter().sum(); db原创 2021-09-12 14:00:07 · 210 阅读 · 0 评论 -
RUST 学习日记 第21课 ——迭代器(Iterator)
RUST 学习日记 第21课 ——迭代器(Iterator)0x00 回顾与开篇关于函数的学习暂时告一段落了,这节课来学习迭代器。前面在讲解for循环的时候,我们当时是通过索引去遍历每个元素,如果在遍历过程中不需要使用索引位置,推荐使用迭代器来遍历数据集合。0x01 迭代器的定义迭代器模式是将遍历数据集合的行为抽象为单独的迭代对象,在遍历集合时把集合中所有元素按顺序传递给处理逻辑。Iterator是一个trait。trait Iterator { type Item; fn nex原创 2021-09-11 14:20:03 · 770 阅读 · 0 评论 -
Rust语言编程实例100题-073
Rust语言编程实例100题-073题目:Rust变量冻结。当数据被相同的名称不变地绑定时,它还会冻结(freeze)。在不可变绑定超出作用域之前,无法修改已冻结的数据。变量冻结应该算作Rust的特性了。编写程序练习Rust的变量冻结**程序分析:**作用域外和作用域内定义同名变量,运行看结果。知识点:变量冻结参考程序代码:fn main() { let mut mut_int = 3; { let mut_int = 5; // 下面代码如果不注释原创 2021-09-10 20:59:31 · 230 阅读 · 0 评论 -
Rust语言编程实例100题-072
Rust语言编程实例100题-072题目:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。创建一个简单的可以存储i32元素的链表,只实现push功能即可。**程序分析:**可以使用结构体来实现链表。知识点:struct参考程序代码:#[derive(Debug)]struct Li原创 2021-09-09 12:49:43 · 278 阅读 · 0 评论 -
Rust学习日记番外篇——代码写诗
Rust学习日记番外篇——代码写诗中秋节即将来临啦~~提前祝大家月饼节快乐。今天看到了掘金的文章,有个代码写诗的活动,那我就小露一手了。0x01 选定诗句在掘金有下面几句诗可选。举头望明月,低头思故乡。万里无云镜九州,最团圆夜是中秋。明月几时有?把酒问青天。但愿人长久,千里共婵娟。我昨既赋白兔诗,笑他常娥诚自痴。今夜月明人尽望,不知秋思落谁家。举杯邀明月,对影成三人。忆对中秋丹桂丛。花在杯中。月在杯中。好时节,愿得年年,常见中秋月。一年逢好夜,万里见明时。嫦娥应悔偷灵药, 碧海原创 2021-09-08 13:58:47 · 357 阅读 · 0 评论 -
Rust语言编程实例100题-071
Rust语言编程实例100题-071题目:循环输入练习。从控制台读取3个名字,最后控制台输出三个名字。**程序分析:**循环读入数据问题。通过for循环每次读入一个名字,然后将其添加至向量中。待循环结束后,输出向量中的值。注意每次读取新的输入的之后,需要清空input数据,防止数据重复。知识点:循环 输入参考程序代码:fn main() { let mut input = String::new(); let mut names: Vec<String> = Vec::原创 2021-09-07 13:11:19 · 207 阅读 · 0 评论 -
Rust语言编程实例100题-070
Rust语言编程实例100题-070题目:输出下面字符串的字符长度和字节长度。字符串:hello我喜欢Rust!????**程序分析:**这道题确实很简单,此题仅仅是为了让大家理解在Rust中字符长度和字节长度的区别。通常使用len()方法输出的是字符串的字节长度,chars().count()方法输出的是字符串的字符长度。知识点:字符长度和字节长度参考程序代码:fn main() { let s = "hello我喜欢Rust!????"; println!("字符长度为:原创 2021-09-06 07:51:20 · 163 阅读 · 0 评论 -
Rust语言编程实例100题-069
Rust语言编程实例100题-069题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。简化要求:以8个人为准,计算剩下的最后一个序号是几?**程序分析:**可以考虑使用迭代器和过滤器计算。如果数组的列表不为1就一直循环,计数将序号是3的数字过滤掉。知识点:迭代器、过滤器参考程序代码:fn main() { const N: i32 = 8; let mut a: Vec<i32> = (1..=原创 2021-09-05 14:39:33 · 177 阅读 · 0 评论 -
RUST 学习日记 第20课 ——闭包
RUST 学习日记 第20课 ——闭包0x00 回顾与开篇我们已经通过两节课介绍了Rust的函数使用方法,尤其是要学会使用Rust的高阶函数,它在后续的项目编写中会变得很常用。这节课学习函数的另一种表现形式——闭包(Closure),有些人也被称其为匿名函数,但不准确。0x01 闭包的定义闭包(Closure)通常是指词法闭包,是一个持有外部环境变量的函数。外部环境是指闭包定义时所在的词法作用域。外部环境变量,在函数式编程范式中也被称为自由变量,是指并不是在闭包内定义的变量。将自由变量和自身绑原创 2021-09-04 11:35:23 · 221 阅读 · 0 评论 -
Rust语言编程实例100题-068
Rust语言编程实例100题-068题目:有 n个整数,使其前面各数顺序向后移 m 个位置,最后m个数变成最前面的 m 个数。现将要求简化一点,给定一个数组,请按上面的要求移动4个位置,然后打印移动后的数组。数组如下:[5, 6, 7, 8, 9, 0, 1, 2, 3, 4]**程序分析:**可以先记录最后一个数据,然后所有元素依次向后移动一个位置,移动offset次即可。知识点:循环参考程序代码:fn main() { let mut a = [5, 6, 7, 8, 9, 0,原创 2021-09-03 13:49:11 · 95 阅读 · 0 评论 -
Rust语言编程实例100题-067
Rust语言编程实例100题-067题目:给定一个数组,将数组内的最大的元素与第一个元素交换,数组内的最小的元素与最后一个元素交换,最后输出这个数组。数组如下:[12, 123, 4, 65, 21]**程序分析:**声明两个变量分别是最小元素位置和最大元素位置。通过循环比较,获取最大元素和最小元素的位置。最后分别交换他们的位置。知识点:循环、数组参考程序代码:fn main() { let mut array = [12, 123, 4, 65, 21]; let mut原创 2021-09-02 13:28:06 · 149 阅读 · 0 评论 -
Rust语言编程实例100题-066
Rust语言编程实例100题-066题目:Rust指针练习。先来理解下引用和借用的概念。引用是作为参数传递给函数的地址。借用就像我们借一些东西,如果已经完成借用,需要还给原所有者。 引用和借用是相互的,即当引用被释放时,借用也结束。**程序分析:**使用引用来交换两个数的值。知识点:指针参考程序代码:fn main() { let mut a = 5; let mut b = 6; swap(&mut a, &mut b); dbg!(a);原创 2021-09-01 07:40:11 · 127 阅读 · 0 评论 -
Rust语言编程实例100题-065
Rust语言编程实例100题-065题目:泛型练习。泛型并不是Rust特有的概率,在很多强类型的编程语言中也支持范围。泛型允许开发者编写一些在使用时才指定类型的代码。泛型,顾名思义就是泛指的类型,在日常编程中会写一些函数,并可能将其应用在很多类型中,如果为每个类型都实现一遍,那么工作量会成倍增加。泛型则是为了解决这个问题。**程序分析:**无知识点:泛型参考程序代码:fn main() { let a = test65_tem(1, 2); dbg!(a); let b =原创 2021-08-31 07:00:55 · 172 阅读 · 0 评论 -
Rust语言编程实例100题-064
Rust语言编程实例100题-064题目:Rust中使用as操作符来转换基本数类型。需要注意的是as关键字不支持重载。短类型转换为长类型是没有问题,反之,则会发生截断处理。要求:练习Rust中as操作符的使用。使用as操作符将i32类型转换为f64类型。然后再将f64类型转换为i32类型。数据变量可以自己定义。**程序分析:**无知识点:as操作符参考程序代码:fn main() { let a :i32 = 8; let b = a as f64; let c = 1.原创 2021-08-30 13:30:34 · 205 阅读 · 0 评论 -
Rust数据结构——排序算法(一)
Rust数据结构——排序算法(一)0x01 常见的排序算法排序算法是数据结构中很常见的算法。如果你了解过数据结构,那么对“常见的排序算法有哪些?”这个问题的回答都懒得答了。那么我还是来列举下吧。选择排序插入排序希尔排序冒泡排序快速排序基数排序堆排序归并排序等排序算法实在是太多了,今天我们用Rust来实现几种比较简单的排序算法。0x02 选择排序选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是原创 2021-08-29 13:14:43 · 832 阅读 · 0 评论 -
RUST 学习日记 第19课 ——函数(二)
RUST 学习日记 第19课 ——函数(二)0x00 回顾与开篇上节初步了解了Rust的函数,这节课继续介绍Rust的高阶函数——函数作为参数和函数作为返回值的两种形式。0x01 type定义别名在Rust中,我们可以使用type关键字来为Rust的原始类型或者自定义类型定义别名。示例代码如下: type Int = i32; type Float = f32; type Double = f64; type Char = char; let a: Int原创 2021-08-28 17:01:24 · 463 阅读 · 0 评论 -
Rust语言编程实例100题-063
Rust语言编程实例100题-063**题目:**Rust 支持元组 tuple。而且元组是一个 复合类型 。复合类型 可以存储多个不同类型的数据。复合类型就像我们的菜篮子,里面可以放各种类型的菜。元组有着固定的长度。而且一旦定义,就不能再增长或缩小。元组的下标从 0 开始。Rust 中元组的定义很简单,就是使用一对小括号 () 把所有元素放在一起,元素之间使用逗号 , 分隔。要求:练习Rust中的元组。**程序分析:**无知识点:元组参考程序代码:fn main() { let tup原创 2021-08-27 13:01:07 · 93 阅读 · 0 评论 -
Rust语言编程实例100题-062
Rust语言编程实例100题-062**题目:**在Rust中,有一种类型叫做Slice,中文译为切片。一个切片(slice)就是指向一段 内存 的指针。因此 切片 可用于访问内存块中 连续区间内的数据。一般情况下,能够在内存中连续区间存储数据的 数据结构 有: 数组 array、向量 vector、字符串 string。也就是说,切片 可以和数组、向量、字符串一起使用,它使用 数字索引 (类似于数组的下标索引)来访问它所指向的数据。要求:练习Rust中的切片(Slice)。**程序分析:**无知识原创 2021-08-26 13:20:30 · 173 阅读 · 0 评论 -
Rust语言编程实例100题-061
Rust语言编程实例100题-061**题目:**杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国数学史上的一个伟大成就。要求:打印出杨辉三角形(要求打印出10行)。程序分析:结构如下所示:11 11 2 11 3 3 11 4原创 2021-08-25 07:32:17 · 194 阅读 · 0 评论 -
RUST 学习日记 第14课 ——字符串(二)
RUST 学习日记 第14课 ——字符串(二)0x00 回顾与开篇最近工作比较忙,更新频率慢了下来,希望大家谅解下。上节课初步了解了Rust的字符串,在Rust中有两种字符串类型,一种是可变长度字符串,也叫字符串切片,另一种则是不可变长度的字符串。也熟悉了简单使用它们的方法。这节课继续讲解字符串,深入到内存剖析Rust字符串。0x01 可变长度字符串String和向量Vector联系和区别上节提到过,可变长度字符串String其实是一个结构体,里面封装了Vec,那么它跟向量又存在什么样的联系原创 2021-07-25 15:35:46 · 722 阅读 · 4 评论 -
RUST 学习日记 第13课 ——字符串(一)
RUST 学习日记 第13课 ——字符串(一)0x00 回顾与开篇上节课讲解了切片(Slice)、数组(Array)、向量(Vector)的区别。看到好多同学给我反馈,说可能有点儿晦涩难懂。那我在这里给你们吃一颗定心丸,你们可以先只了解有切片这个定义就可以了。这节课继续讲解一种重要数据类型——字符串(String)。可以这么说,在所有的程序中,大约有80%的代码都是与字符串有关系,所以它很重要。也许,了解Rust的字符串,你只看这篇文章就够了。0x01 字符串的定义在Rust中有两种字符串类原创 2021-07-20 13:16:53 · 861 阅读 · 0 评论 -
RUST 学习日记 第12课 ——切片
<h3 id="rust--学习日记-第12课-切片(slice)">RUST 学习日记 第12课 ——切片(Slice)</h3><hr><p><img src="https://gitee.原创 2021-07-15 12:40:26 · 1194 阅读 · 2 评论 -
RUST 学习日记 第11课 ——向量
<h3 id="rust--学习日记-第11课-向量(动态数组)">RUST 学习日记 第11课 ——向量(动态数组)</h3><hr><p><img src="https://gitee.co原创 2021-07-11 09:42:21 · 410 阅读 · 0 评论 -
RUST 学习日记 第10课 ——复合数据类型
<h3 id="rust--学习日记-第10课-复合数据类型">RUST 学习日记 第10课 ——复合数据类型</h3><hr><p><img src="https://gitee.com/ha原创 2021-07-07 07:22:22 · 242 阅读 · 0 评论 -
RUST 学习日记 第9课 ——输入与输出
<h3 id="rust--学习日记-第9课-输入与输出">RUST 学习日记 第9课 ——输入与输出</h3><hr><p><img src="https://gitee.com/haoyu3原创 2021-07-04 07:29:16 · 1409 阅读 · 0 评论 -
RUST 学习日记 第8课 ——类型转换
<h3 id="rust--学习日记-第8课-类型转换">RUST 学习日记 第8课 ——类型转换</h3><hr><p><img src="https://gitee.com/haoyu3/p原创 2021-06-30 13:10:40 · 1413 阅读 · 0 评论 -
RUST 学习日记 第7课 ——字面量和运算符
<h3 id="rust--学习日记-第7课-字面量和运算符">RUST 学习日记 第7课 ——字面量和运算符</h3><hr><p><img src="https://gitee.com/ha原创 2021-06-27 08:26:45 · 485 阅读 · 0 评论 -
RUST 学习日记 第6课 ——基本数据类型
<h3 id="rust--学习日记-第6课-基本数据类型">RUST 学习日记 第6课 ——基本数据类型</h3><hr><p><img src="https://gitee.com/haoy原创 2021-06-23 07:22:35 · 367 阅读 · 0 评论 -
RUST 学习日记 第5课 ——变量和常量
<h3 id="rust--学习日记-第5课-变量和常量">RUST 学习日记 第5课 ——变量和常量</h3><hr><p><img src="https://gitee.com/haoyu3原创 2021-06-19 08:56:35 · 479 阅读 · 0 评论 -
RUST 学习日记 第4课 ——Rust规范
<h3 id="rust--学习日记-第4课-rust规范">RUST 学习日记 第4课 ——Rust规范</h3><h4 id="0x00-回顾">0x00 回顾</h4><p>上一节咱们了解原创 2021-06-15 08:55:56 · 592 阅读 · 1 评论 -
RUST 学习日记 第3课 ——IDE
<h3 id="rust--学习日记-第3课-ide">RUST 学习日记 第3课 ——IDE</h3><h4 id="0x00-回顾">0x00 回顾</h4><p>上一节咱们了解了Cargo原创 2021-06-12 09:35:56 · 744 阅读 · 1 评论 -
RUST 学习日记 第2课 ——Cargo
<h3 id="rust--学习日记-第2课-cargo">RUST 学习日记 第2课 ——Cargo</h3><h4 id="0x00-回顾">0x00 回顾</h4><p>上一节,咱们了解了原创 2021-06-09 08:56:15 · 496 阅读 · 0 评论 -
RUST 学习日记 第1课 ——Hello World
<h3 id="rust--学习日记-第1课-hello-world">RUST 学习日记 第1课 ——Hello World</h3><h4 id="0x00-写在前面">0x00 写在前面</原创 2021-06-06 18:05:37 · 414 阅读 · 2 评论