![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
THE RUST PROGRAMMING LANGUAGE
文章平均质量分 86
Andantex
这个作者很懒,什么都没留下…
展开
-
《Rust权威指南》第20章 最后的项目:构建多线程Web服务器
本章的大头实际上是实现一个线程池- 线程池主体:包括一个用于存储线程的容器,一个通道的发送端- 为线程池实现execute函数,该函数接受一个闭包,并将其发送到通道里去- 线程池中的每个线程中执行的任务是:不断的尝试从通道中获取闭包,一旦获取成功,对闭包进行执行原创 2023-08-16 15:19:35 · 114 阅读 · 0 评论 -
《Rust权威指南》 第19章 高级特性
保证了其裸指针的操作一定是有效的,也就是说我们知道这个函数运行起来没有安全上的问题,只是使用了一些“不安全超能力”。与方法一样,为一个类型实现多个trait时,不同的trait中可能有同名的关联函数,这个类型自身还可能有同名的关联函数。这样做的好处是,如果我们改变了结构体的名称,我们并不需要在每一个方法中都去修改它,只需在结构体定义的地方修改即可。关键字是一个特殊的类型名称,代表正在实现的类型。为一个类型实现多个trait时,不同的trait中可能有同名的方法,这个类型自身还可能有同名的方法。原创 2023-08-14 22:07:43 · 119 阅读 · 1 评论 -
《Rust权威指南》 第18章 模式匹配
一个模式通常由以下组件组成- 字面量- 结构的数组、枚举、结构体、元组- 变量- 通配符- 占位符组件用于描述数据的形状,根据数据的形状进而对值进行匹配原创 2023-08-14 16:35:27 · 169 阅读 · 0 评论 -
《Rust权威指南》 第16章无畏并发
当发送端向通道里发送了多个值时,我们可以将接收器视为接收器,而不是显式的调用recv方法,这回自动逐一处理通道中的值。创建新线程,它接受一个闭包作为参数,该闭包会包含我们想要在新线程中运行的代码。简而言之,send函数会取得被发送的值的所有权,并在消息传递后转移给接收者。(运行时,指的是那些该语言生成的所有可执行文件中都不可或缺的部分)由于handle线程和main线程是同时进行的,此时的问题是,使用move闭包使得我们可以在一个线程中使用另一个线程的数据。方法可以阻塞当前线程直到句柄代表的线程执行结束。原创 2023-08-12 23:23:32 · 105 阅读 · 1 评论 -
《Rust权威指南》 第15章 智能指针
之前我们一直使用的引用类型,就其本质而言,实际上就是指针(正如我们大家都 *“爱”* 的C++那样,Rust中的指针也是一段地址)。而本节将要讨论的智能指针,更是与C++中的智能指针(`unique_ptr,shared_ptr`等)有太多相似之处但是先别急眼,大体上我们不用在使用Rust时进行对于变量的类型的沉思(不要尝试理解`&RefCell`到底是什么东西,是不是指针的指针的指针),而是根据功能来进行思考比如,正常的引用&,一般就是用在函数传参和各种切片类型中,原创 2023-08-11 22:50:50 · 60 阅读 · 1 评论 -
《Rust权威指南》 第14章 进一步认识cargo和crates.io
运行cargo test时,会对文档注释的实例代码(被```包裹)继续测试,也就是除了单元测试、集成测试外最后一个测试区域:文档测试。使用pub use重新导出部分条目,从而建立一套和内部结构不同的对外结构。为紧随注释后的条目编写文档注释,接受markdown语法,使用。这是因为,开发包和使用包是两个不同的场景。区域下的version字段,并重新运行。撤回的影响是,对那些依赖这个包的其它包。为包裹当前注释的外部条目添加文档。在Cargo.toml文件的。即Cargo.toml文件的。区域可以定义构建选项。原创 2023-08-09 20:11:21 · 151 阅读 · 2 评论 -
《Rust权威指南》 第13章 函数式语言特征:迭代器与闭包
分为三步:创建一个类型,为该类型实现Iterator trai (指定item类型,定义next方法)比如我们做一个倒计时迭代器Counter {None } } }原创 2023-08-06 17:07:24 · 90 阅读 · 0 评论 -
《Rust权威指南》 第12章 I/O项目:编写一个命令行程序
本节实现一个经典的命令行工具:grep (globally search a regular expression and print)该工具接受一个文件名和一个字符串作为参数,然后在执行时读取文件,输出包含字符串的所有行实现的方法很简单:读取文件名和待搜查字符串。读取文件并储存于字符串,遍历每行并检查每行是否含有搜索字符串原创 2023-08-04 22:50:27 · 41 阅读 · 0 评论 -
《Rust权威指南》 第11章 编写自动化测试
任何assert家族的必要参数之后出现的参数一起被传递给format!宏,并最终作为附加信息打印在测试结果里面assert_eq!} }此时测试失败的时候,会显示我们的附加信息。原创 2023-08-02 20:22:09 · 62 阅读 · 1 评论 -
《Rust权威指南》 第10章 泛型、trait、生命周期
在函数名后跟一个,里面放上类型参数的声明。(类似于C++中的之后在函数的定义时,使用这些类型参数即可l = item;} } l }此时还不能通过编译,这在我们之后讲trait时讨论在使用时,可以不显式的指明类型参数,让编译器自己推导同样的,在结构体名后跟一个,里面放上类型参数的声明在之后的结构体定义时,使用这些类型参数比如实现一个任意类型坐标的点同样的,在枚举名后跟一个,里面放上类型参数的声明在之后的枚举定义时,使用这些类型参数比如我们的Result枚举。原创 2023-08-01 21:53:02 · 246 阅读 · 1 评论 -
《Rust权威指南》 第9章 错误处理
在Rust中,错误被分成两大类:可恢复错误与不可恢复错误。Rust没有异常机制,而是为这两种错误分别提供了一些方法- 可恢复错误:需要将错误报告给用户并再次进行尝试。使用`Result`- 不可恢复错误:bug。使用`panic!`宏原创 2023-07-30 15:54:18 · 106 阅读 · 0 评论 -
《Rust权威指南》 第8章 通用集合类型
集合包含多个值,这些集合将自己持有的数据存储在堆上。本章讨论下面三个集合。原创 2023-07-29 17:49:49 · 52 阅读 · 0 评论 -
《Rust权威指南》 第7章 使用包、单元包、模块来管理项目
Module在一个crate内,将代码进行分组增加可读性。易于复用控制项目的私有性建立Modulemod 模块名 {...}可嵌套module内可包含其他项(结构体、枚举、常量、trait、函数等)的定义例子:在package my_project下的src/lib.rs文件中,写入下面代码} } }和src/lib.rs称为crate root就体现在这,这两个文件的内容各自组成了名为crate的模块,位于crate模块结构的根部这个模块结构也称为模块树。原创 2023-07-27 23:20:46 · 279 阅读 · 0 评论 -
《Rust权威指南》 第6章 枚举与模式匹配
通过枚举所有可能的值来定义一个类型。原创 2023-07-26 00:05:10 · 63 阅读 · 1 评论 -
《Rust权威指南》 第5章 使用结构体组织相关联的数据
使用struct,像其它任何语言一样,声明所有数据的类型和名称(这里你注意到,声明的最后也有一个逗号)创建一个结构体实例时,通过下面的语法进行创建。每一项都是数据名称:实例数据。访问结构体的成员时,使用。就如在其它任何语言中一样下面提供几种快捷的初始化实例的方法给我们的长方体定义一个计算面积的方法方法的定义位于impl块中当然,每个结构体都可以拥有多个impl块第一个参数是&self正是因为位于中,&self才能被推导为若方法要获得所有权,使用self;若要修改调用者的数据,使用&mut self。原创 2023-07-24 01:00:19 · 73 阅读 · 0 评论 -
《Rust权威指南》 第4章 认识所有权
正是所有权引入,Rust才能够在没有垃圾回收机制的前提下保障内存安全。原创 2023-07-23 01:45:21 · 153 阅读 · 1 评论 -
《Rust权威指南》 第3章 通用编程概念
Rust是静态类型语言,大部分情况下编译器可以自动推导变量类型,某些时候需要我们手动添加类型。可以根据我们上面的讨论,以一个表达式作为函数定义体的结尾,表示返回该表达式的值。变量默认不可变,一旦被绑定到某个值,就不再被改变了。,占4字节,是一个unicode标量值。位的有符号、无符号整数,对于整数字面量,默认推导是。的结果4返回,作为这个代码块的返回值,绑定到。有更高精度,所以浮点数字面量都是默认推导。可以方便的创建具有相同元素的数组,使用。新声明的变量可以覆盖掉旧的同名变量。,这个与所有语言都是一样的。原创 2023-07-20 00:05:16 · 67 阅读 · 2 评论 -
《Rust权威指南》第 1、2 章 入门
查看是否能通过编译,不会生成可执行文件,速度很快,适合周期性调用以检查程序。会在优化模式下构建生成可执行文件,生成的文件在。完成构建,整个文件结构如下。原创 2023-07-18 15:00:32 · 189 阅读 · 1 评论