![](https://img-blog.csdnimg.cn/fb947f59c51b44d9acc792843de7b8e9.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Rust
文章平均质量分 75
Rust是一门系统编程语言 ,专注于安全 ,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言
shiyivei
for science,art and meaning
展开
-
03 Rust中的结构体
一文掌握Rust中的结构体原创 2023-03-07 18:25:31 · 393 阅读 · 1 评论 -
02 Rust中的字符串
一文掌握Rust中的字符串原创 2023-03-07 18:20:00 · 472 阅读 · 0 评论 -
01 Rust 中的路径` :: `
一起来学习Rust吧原创 2023-03-04 19:39:37 · 468 阅读 · 0 评论 -
通过例子学习Rust
通过例子学习rust,学习Rust的必看的官方文档之一原创 2022-06-27 08:33:20 · 1026 阅读 · 0 评论 -
The Rust Programming Language - 第20章 最后的项目:构建多线程web server - 20.3 优雅的停机与清理
20 最后的项目:构建多线程web server本章我们将会练习一个项目,顺便复习一下前面几章的内容,这个项目会实现宇哥返回”Hello“的web server如下是我们的计划:1.学习一些TCP与HTTP知识2.在套接字(socket)上监听TCP请求3.解析少量的HTTP请求4.创建一个合适的HTTP响应5.通过线程池改善server的吞吐量但是注意,我们本次实例并不是使用Rust构建web server最好的方法。crates.io上有很多可用于生产环境的crate。它们提供了比我们所原创 2021-12-13 22:50:19 · 676 阅读 · 0 评论 -
The Rust Programming Language - 第20章 最后的项目:构建多线程web server - 20.2 将单线程server变为多线程server
20 最后的项目:构建多线程web server本章我们将会练习一个项目,顺便复习一下前面几章的内容,这个项目会实现宇哥返回”Hello“的web server如下是我们的计划:1.学习一些TCP与HTTP知识2.在套接字(socket)上监听TCP请求3.解析少量的HTTP请求4.创建一个合适的HTTP响应5.通过线程池改善server的吞吐量但是注意,我们本次实例并不是使用Rust构建web server最好的方法。crates.io上有很多可用于生产环境的crate。它们提供了比我们所原创 2021-12-13 00:50:13 · 400 阅读 · 0 评论 -
The Rust Programming Language - 第20章 最后的项目:构建多线程web server - 20.1 构建单线程web server
20 最后的项目:构建多线程web server本章我们将会练习一个项目,顺便复习一下前面几章的内容,这个项目会实现宇哥返回”Hello“的web server如下是我们的计划:1.学习一些TCP与HTTP知识2.在套接字(socket)上监听TCP请求3.解析少量的HTTP请求4.创建一个合适的HTTP响应5.通过线程池改善server的吞吐量但是注意,我们本次实例并不是使用Rust构建web server最好的方法。crates.io上有很多可用于生产环境的crate。它们提供了比我们所原创 2021-12-07 17:50:37 · 392 阅读 · 0 评论 -
The Rust Programming Language - 第19章 高级特征 - 19.5 宏
19 高级特征我们将在这一章学习更多高级功能19.5 宏宏指的是Rust中一系列功能,宏用macro_rules!来声明三种过程宏:1.自定义#[derive]宏在结构体和枚举上指定通过derive属性添加的代码2.类属性宏定义可用于任意项的自定义属性3.类函数宏看起来像函数不过作用于作为参数传递的token宏和函数的区别从根本上来说,宏是一种为写其它代码而写代码的方式,即所谓元编程所有宏以展开的方式来生成比我们手写出的更多的代码元编程对于减少代码量和维护代码非常有用,它也扮演了函数的原创 2021-12-06 14:29:33 · 510 阅读 · 0 评论 -
The Rust Programming Language - 第19章 高级特征 - 19.4 高级函数和闭包
19 高级特征我们将在这一章学习更多高级功能19.4 高级函数和闭包让我们来探索有关于函数和闭包的高级功能:函数指针以及返回值闭包函数指针除了向函数传递闭包之外,还可以传递函数,使用的是函数指针fn,函数的类型是fn(使用f)以免与Fn闭包trait相混淆。指定参数为函数指针的语法类似于闭包fn add_one(x:i32) -> i32 { x+1}fn do_twice(f: fn(i32)-> i32,arg:i32) -> i32 { f(arg)原创 2021-12-05 16:44:31 · 142 阅读 · 0 评论 -
The Rust Programming Language - 第19章 高级特征 - 19.3 高级类型
19 高级特征我们将在这一章学习更多高级功能19.3 高级类型Rust类型系统有一些我们曾经提到过但是没有深入的功能。我们将在这一节讨论,为什么newtype与类型一样有用,类型别名是什么,!类型和动态大小类型又是什么为了安全和抽象而使用newtype模式newtype模式用于一些我们还未讨论的功能,主要包括:1.静态的确保某值不被混淆、用来表示一个值的单元如:Millimeters 和 Meters结构体都在newtype中封装了u32值,如果编写了一个有Millimeters类型参数的函数原创 2021-12-05 15:47:32 · 329 阅读 · 0 评论 -
The Rust Programming Language - 第19章 高级特征 - 19.2 高级trait
19 高级特征我们将在这一章学习更多高级功能19.2 高级trait关联类型在trait定义中指定占位符类型关联类型是一个方式,是一个将类型占位符与trait相关联,这样在trait 的方法签名中就可以使用这些占位符类型pub trait Iterator { type Item; //使用type关键字将占位类型Item与Iterator关联起来 fn next(&mut self)->Option<Self::Item>;//在方法签名中使用这些占位原创 2021-12-05 13:23:41 · 386 阅读 · 0 评论 -
The Rust Programming Language - 第19章 高级特征 - 19.1 不安全的Rust
19 高级特征我们将在这一章学习更多高级功能19.1 不安全的Rust截至目前,我们所编译的代码Rust在编译时会强制执行检查,以确保内存安全。但是Rust还提供了一种模式,不安全Rust,这些代码被编写在 unsafe 块中,它们与常规代码无异,但是能提供额外的功能,满足我们无法通过安全Rust代码实现的需求为什么要设计不安全Rust呢?原因有二:1.静态分析本质上比较保守,所以使用安Rust时,编译器在检查一段代码是否支持某个保证时,当它不能确定时,即使这段代码本身是安全的,由于保守规则,它也原创 2021-12-04 18:54:19 · 3023 阅读 · 0 评论 -
The Rust Programming Language - 第18章 模式与模式匹配 - 18.3 模式的全部语法
18 模式与模式匹配模式是Rust中的特殊语法,用来匹配类型中的结构,无论类型复杂与否。模式由以下一些内容组合而成:字面值\解构的数组、枚举、元组或者结构体\变量\通配符\占位符,这些部分描述了我们需要处理的数据形状。(匹配模式其实可以理解为匹配项,简单理解就是把两个项目拉起来比较,看等不等于,等于的话我们就执行一些代码,不等于的话执行另一些代码。这个点就跟条件语句外加等于号一样,只不过Rust中把它专门做了个匹配模式)18.3 模式的全部语法本节中,我们收集了模式中所有有效的语法,并将讨论为什么可原创 2021-12-02 23:33:21 · 556 阅读 · 0 评论 -
The Rust Programming Language - 第18章 模式与模式匹配 - 18.2 Refutability(可反驳性):模式是否会匹配失效
18 模式与模式匹配模式是Rust中的特殊语法,用来匹配类型中的结构,无论类型复杂与否。模式由以下一些内容组合而成:字面值\解构的数组、枚举、元组或者结构体\变量\通配符\占位符,这些部分描述了我们需要处理的数据形状。(匹配模式其实可以理解为匹配项,简单理解就是把两个项目拉起来比较,看等不等于,等于的话我们就执行一些代码,不等于的话执行另一些代码。这个点就跟条件语句外加等于号一样,只不过Rust中把它专门做了个匹配模式)18.2 Refutability(可反驳性):模式是否会匹配失效模式有两种形式原创 2021-12-02 14:13:03 · 142 阅读 · 0 评论 -
The Rust Programming Language - 第18章 模式与模式匹配 - 18.1 所有可能会遇到模式的位置
18 模式与模式匹配模式是Rust中的特殊语法,用来匹配类型中的结构,无论类型复杂与否。模式由以下一些内容组合而成:字面值\解构的数组、枚举、元组或者结构体\变量\通配符\占位符,这些部分描述了我们需要处理的数据形状。(匹配模式其实可以理解为匹配项,简单理解就是把两个项目拉起来比较,看等不等于,等于的话我们就执行一些代码,不等于的话执行另一些代码。这个点就跟条件语句外加等于号一样,只不过Rust中把它专门做了个匹配模式)18.1 所有可能会遇到模式的位置Rust中有很多地方都会用到匹配模式matc原创 2021-12-01 23:59:22 · 248 阅读 · 0 评论 -
The Rust Programming Language - 第17章 Rust的面向对象编程特性 - 17.3 面向对象设计模式的实现
17 Rust的面向对象编程特性面向对象编程(OOP)是一种模式话编程方式17.3 面向对象设计模式的实现状态模式是一个面向对象设计模式。它的关键在于一个值有很多内部状态,它们叫状态对象,同时每个状态对象都拥有自己的行为以及何时转变为另一种状态。值对状态对象的行为以及状态何时转移毫不知情使用状态模式的好处在于业务需求发生变化时,我们不需要改变值或者操作值的代码。只需要转变状态对象的状态(包括增加状态对象)或变更每个状态对象的行为即可我们来通过一个博客发布流程来说明上述功能博客的功能:1.博文从原创 2021-11-30 23:46:36 · 316 阅读 · 0 评论 -
The Rust Programming Language - 第17章 Rust的面向对象编程特性 - 17.2 为使用不同类型的值而设计的trait对象
17 Rust的面向对象编程特性面向对象编程(OOP)是一种模式话编程方式17.2 为使用不同类型的值而设计的trait对象之前我们了解了vector,它有个缺陷就是只能存储同类型的元素,但是我们可以使用枚举或者结构体来存储不同类型的数据但是呢,在实际中,我们希望这种类型的集合能够扩展。我们来通过一个例子说明这一点我们将创建一个图形用户接口(Graphic User Interface,GUI)工具,它会遍历列表并调用每一个项目draw方法来将其绘制到屏幕上我们也将创建一个叫做gui的库crat原创 2021-11-29 21:52:05 · 313 阅读 · 0 评论 -
The Rust Programming Language - 第17章 Rust的面向对象编程特性 - 17.1 面向对象语言的特征
17 Rust的面向对象编程特性面向对象编程(OOP)是一种模式话编程方式17.1 面向对象语言的特征Rust被很多不同的编程范式影响对象包含数据和行为其中一种面向对象便车被这样定义:面向对像的程序是由对象组成的。一个对象包含数据和操作这些数据的过程,这些过程通常被称为方法或者操作封装隐藏了实现细节封装思想通常和面向对象编程相关:对像的实现细节不能被使用对象的代码获取到,使用对象的代码只能通过对象提供的API。这样,改变和重构对象的内部时无需改变使用对象的代码之前我们使用pub来决定项的公有原创 2021-11-28 21:26:42 · 234 阅读 · 0 评论 -
The Rust Programming Language - 第16章 无畏并发 - 16.4 使用Sync和Send trait的可扩展并发
16 无畏并发安全高效的处理并发编程是Rust的另一个主要的目标内存安全和高效编程一直都是很多语言追求的目的,Rust采用所有权和类型系统来平衡处理这一点本章我们将会了解1.如何创建线程来同时运行多端代码2.消息传递并发,其中channel 被用来在线程之间传递消息3.共享状态并发,其中多个线程可以访问同一片数据4.Sync和Send trait,将Rust的并发保证扩展到用户定义的以及标准库提供的类型中16.4 使用Sync和Send trait的可扩展并发Rust的并发模型中,语言本身原创 2021-11-28 20:14:06 · 291 阅读 · 0 评论 -
The Rust Programming Language - 第16章 无畏并发 - 16.3 共享状态并发
16 无畏并发安全高效的处理并发编程是Rust的另一个主要的目标内存安全和高效编程一直都是很多语言追求的目的,Rust采用所有权和类型系统来平衡处理这一点本章我们将会了解1.如何创建线程来同时运行多端代码2.消息传递并发,其中channel 被用来在线程之间传递消息3.共享状态并发,其中多个线程可以访问同一片数据4.Sync和Send trait,将Rust的并发保证扩展到用户定义的以及标准库提供的类型中16.3 共享状态并发消息传递虽然是一个很好的处理并发的方式,但是并不是唯一一个在某原创 2021-11-28 19:36:31 · 400 阅读 · 0 评论 -
The Rust Programming Language - 第16章 无畏并发 - 16.2 使用消息传递在线程间传递数据
16 无畏并发安全高效的处理并发编程是Rust的另一个主要的目标内存安全和高效编程一直都是很多语言追求的目的,Rust采用所有权和类型系统来平衡处理这一点本章我们将会了解1.如何创建线程来同时运行多端代码2.消息传递并发,其中channel 被用来在线程之间传递消息3.共享状态并发,其中多个线程可以访问同一片数据4.Sync和Send trait,将Rust的并发保证扩展到用户定义的以及标准库提供的类型中16.2 使用消息传递在线程间传递数据我们使用消息传递来确保并发安全,Rust中一个实原创 2021-11-28 16:26:01 · 220 阅读 · 0 评论 -
The Rust Programming Language - 第16章 无畏并发 - 16.1 使用线程同时运行代码
16 无畏并发安全高效的处理并发编程是Rust的另一个主要的目标内存安全和高效编程一直都是很多语言追求的目的,Rust采用所有权和类型系统来平衡处理这一点本章我们将会了解1.如何创建线程来同时运行多端代码2.消息传递并发,其中channel 被用来在线程之间传递消息3.共享状态并发,其中多个线程可以访问同一片数据4.Sync和Send trait,将Rust的并发保证扩展到用户定义的以及标准库提供的类型中16.1 使用线程同时运行代码在大部分的现代操作系统中,已执行的程序代码都在一个进程中原创 2021-11-28 15:18:29 · 364 阅读 · 0 评论 -
The Rust Programming Language - 第15章 智能指针 - 15.6 引用循环和内存泄漏是安全的
15 智能指针指针指向变量的内存地址,除了引用数据没有其它的功能,因此没有运行开销智能指针是一类数据结构,虽然表现类似指针,但是拥有额外的元数据和功能。Rust的智能指针提供了包含引用之外的其他功能,但是指针这个概念并不是Rust独有的在Rust中,普通指针只是借用数据,而智能指针还拥有它们指向的数据,比如String和Vec,它们都是智者指针,它们拥有数据并且可以被修改。它们也带有元数据(比如容量)和额外的功能和保证(String的数据总是有效的UTF-8编码)智能指针通常使用结构体来实现,区别与原创 2021-11-28 11:38:31 · 387 阅读 · 0 评论 -
The Rust Programming Language - 第15章 智能指针 - 15.5 RefCell<T> 和内部可变性模式
15 智能指针指针指向变量的内存地址,除了引用数据没有其它的功能,因此没有运行开销智能指针是一类数据结构,虽然表现类似指针,但是拥有额外的元数据和功能。Rust的智能指针提供了包含引用之外的其他功能,但是指针这个概念并不是Rust独有的在Rust中,普通指针只是借用数据,而智能指针还拥有它们指向的数据,比如String和Vec,它们都是智者指针,它们拥有数据并且可以被修改。它们也带有元数据(比如容量)和额外的功能和保证(String的数据总是有效的UTF-8编码)智能指针通常使用结构体来实现,区别与原创 2021-11-28 09:03:58 · 396 阅读 · 0 评论 -
The Rust Programming Language - 第15章 智能指针 - 15.4 Rc<T> 引用计数智能指针
15 智能指针指针指向变量的内存地址,除了引用数据没有其它的功能,因此没有运行开销智能指针是一类数据结构,虽然表现类似指针,但是拥有额外的元数据和功能。Rust的智能指针提供了包含引用之外的其他功能,但是指针这个概念并不是Rust独有的在Rust中,普通指针只是借用数据,而智能指针还拥有它们指向的数据,比如String和Vec,它们都是智者指针,它们拥有数据并且可以被修改。它们也带有元数据(比如容量)和额外的功能和保证(String的数据总是有效的UTF-8编码)智能指针通常使用结构体来实现,区别与原创 2021-11-27 18:58:50 · 275 阅读 · 0 评论 -
The Rust Programming Language - 第15章 智能指针 - 15.3 使用 Drop Trait 清理运行代码
15 智能指针指针指向变量的内存地址,除了引用数据没有其它的功能,因此没有运行开销智能指针是一类数据结构,虽然表现类似指针,但是拥有额外的元数据和功能。Rust的智能指针提供了包含引用之外的其他功能,但是指针这个概念并不是Rust独有的在Rust中,普通指针只是借用数据,而智能指针还拥有它们指向的数据,比如String和Vec,它们都是智者指针,它们拥有数据并且可以被修改。它们也带有元数据(比如容量)和额外的功能和保证(String的数据总是有效的UTF-8编码)智能指针通常使用结构体来实现,区别与原创 2021-11-27 17:11:39 · 463 阅读 · 0 评论 -
The Rust Programming Language - 第15章 智能指针 - 15.2 通过Deref trait将智能指针当作常规引用处理
15 智能指针指针指向变量的内存地址,除了引用数据没有其它的功能,因此没有运行开销智能指针是一类数据结构,虽然表现类似指针,但是拥有额外的元数据和功能。Rust的智能指针提供了包含引用之外的其他功能,但是指针这个概念并不是Rust独有的在Rust中,普通指针只是借用数据,而智能指针还拥有它们指向的数据,比如String和Vec,它们都是智者指针,它们拥有数据并且可以被修改。它们也带有元数据(比如容量)和额外的功能和保证(String的数据总是有效的UTF-8编码)智能指针通常使用结构体来实现,区别与原创 2021-11-27 16:41:18 · 354 阅读 · 0 评论 -
The Rust Programming Language - 第15章 智能指针 - 15.1 使用Box<T>指向堆上的数据
15 智能指针指针指向变量的内存地址,除了引用数据没有其它的功能,因此没有运行开销智能指针是一类数据结构,虽然表现类似指针,但是拥有额外的元数据和功能。Rust的智能指针提供了包含引用之外的其他功能,但是指针这个概念并不是Rust独有的在Rust中,普通指针只是借用数据,而智能指针还拥有它们指向的数据,比如String和Vec,它们都是智者指针,它们拥有数据并且可以被修改。它们也带有元数据(比如容量)和额外的功能和保证(String的数据总是有效的UTF-8编码)智能指针通常使用结构体来实现,区别与原创 2021-11-27 14:18:23 · 349 阅读 · 0 评论 -
The Rust Programming Language - 第14章 更多关于Cargo和Crates.io的内容 - 14.4 & 14.5 安装二进制文件和使用Cargo 自定义扩展命令
14 更多关于Cargo和Crates.io的内容进一步认识Cargo和Crate.io目前为止,我们只使用过Cargo构建、运行和测试代码这些最基本的功能,本章我们来探索更多功能使用发布配置来自定义构建将库发布到crate.io使工作空间来组织根本更大的项目从crate.io安装二进制文件使用自定义的命令来扩展Cargo14.4 使用cargo install 从crate.io 安装二进制文件cargo install命令用于在本地安装和使用二进制crate。 它并不打算替换系统中的包原创 2021-11-23 23:59:24 · 476 阅读 · 0 评论 -
The Rust Programming Language - 第14章 更多关于Cargo和Crates.io的内容 - 14.3 Cargo工作空间
14 更多关于Cargo和Crates.io的内容进一步认识Cargo和Crate.io目前为止,我们只使用过Cargo构建、运行和测试代码这些最基本的功能,本章我们来探索更多功能使用发布配置来自定义构建将库发布到crate.io使工作空间来组织根本更大的项目从crate.io安装二进制文件使用自定义的命令来扩展Cargo14.3 Cargo工作空间随着项目开发的深入,库crate持续增大,而你希望将其进一步拆分成多个库crate。cargo提供的工作空间可以帮助我们管理多个相关的协同开发原创 2021-11-23 19:27:26 · 396 阅读 · 0 评论 -
The Rust Programming Language - 第14章 更多关于Cargo和Crates.io的内容 - 14.2 将crate发布到Crate.io
14 更多关于Cargo和Crates.io的内容进一步认识Cargo和Crate.io目前为止,我们只使用过Cargo构建、运行和测试代码这些最基本的功能,本章我们来探索更多功能使用发布配置来自定义构建将库发布到crate.io使工作空间来组织根本更大的项目从crate.io安装二进制文件使用自定义的命令来扩展Cargo14.2 将crate发布到Crate.io我们曾在项目中使用crate.io上的包作为依赖,其实crate.io是一个平台,用来分发包的源代码和托管开源代码,这意味着,原创 2021-11-22 22:49:01 · 483 阅读 · 0 评论 -
The Rust Programming Language - 第14章 更多关于Cargo和Crates.io的内容 - 14.1 采用发布配置来自定义构建
14 更多关于Cargo和Crates.io的内容进一步认识Cargo和Crate.io目前为止,我们只使用过Cargo构建、运行和测试代码这些最基本的功能,本章我们来探索更多功能使用发布配置来自定义构建将库发布到crate.io使工作空间来组织根本更大的项目从crate.io安装二进制文件使用自定义的命令来扩展Cargo14.1 采用发布配置来自定义构建在rust中发布配置是预定义的、可定制的带有不同选项的配置,他们允许程序员更灵活的控制代码的编译的多种选项。每一个配置都彼此相互独立C原创 2021-11-22 15:47:22 · 171 阅读 · 0 评论 -
The Rust Programming Language - 第13章 Rust语言中的函数式语言功能:迭代器与闭包 - 13.4 性能对比:循环VS迭代器
13 Rust语言中的函数式语言功能:迭代器与闭包函数式编程风格通常包括将函数作为另一个函数的参数、返回值,将函数作为值赋值给变量,以供后续执行本章中我们将会介绍以下内容:闭包:一个可以存储在变量里的类似函数的数据结构迭代器:一种处理元素序列的方式如何使用这些功能来改进第十二章的I/O项目这两个功能的性能(剧透警告:它们的速度超乎你的想象)我40米的大刀已经饥渴难耐了,让我们攻下这一章!13.4 性能对比:循环VS迭代器为了决定使用哪个实现我们来测试一下哪个版本更快:是for循环更快还是迭原创 2021-11-22 14:50:35 · 246 阅读 · 0 评论 -
The Rust Programming Language - 第13章 Rust语言中的函数式语言功能:迭代器与闭包 - 13.3 改进I/O项目
13 Rust语言中的函数式语言功能:迭代器与闭包函数式编程风格通常包括将函数作为另一个函数的参数、返回值,将函数作为值赋值给变量,以供后续执行本章中我们将会介绍以下内容:闭包:一个可以存储在变量里的类似函数的数据结构迭代器:一种处理元素序列的方式如何使用这些功能来改进第十二章的I/O项目这两个功能的性能(剧透警告:它们的速度超乎你的想象)我40米的大刀已经饥渴难耐了,让我们攻下这一章!13.3 改进I/O项目上一节我们学习了迭代器相关的知识,现在我们来对上述代码进行改进,让其变的更加简洁原创 2021-11-22 14:07:58 · 268 阅读 · 0 评论 -
The Rust Programming Language - 第13章 Rust语言中的函数式语言功能:迭代器与闭包 - 13.2 使用迭代器处理元素序列
13 Rust语言中的函数式语言功能:迭代器与闭包函数式编程风格通常包括将函数作为另一个函数的参数、返回值,将函数作为值赋值给变量,以供后续执行本章中我们将会介绍以下内容:闭包:一个可以存储在变量里的类似函数的数据结构迭代器:一种处理元素序列的方式如何使用这些功能来改进第十二章的I/O项目这两个功能的性能(剧透警告:它们的速度超乎你的想象)我40米的大刀已经饥渴难耐了,让我们攻下这一章!13.2 使用迭代器处理元素序列迭代器模式允许我们对一个序列的项进行某些处理。迭代器负责遍历序列中的每一原创 2021-11-21 23:45:24 · 309 阅读 · 0 评论 -
The Rust Programming Language - 第13章 Rust语言中的函数式语言功能:迭代器与闭包 - 13.1 可以捕获其环境的匿名函数
13 Rust语言中的函数式语言功能:迭代器与闭包函数式编程风格通常包括将函数作为另一个函数的参数、返回值,将函数作为值赋值给变量,以供后续执行本章中我们将会介绍以下内容:闭包:一个可以存储在变量里的类似函数的数据结构迭代器:一种处理元素序列的方式如何使用这些功能来改进第十二章的I/O项目这两个功能的性能(剧透警告:它们的速度超乎你的想象)我40米的大刀已经饥渴难耐了,让我们攻下这一章!13.1 可以捕获其环境的匿名函数Rust闭包其实就是保存进变量或作为参数传递给其他函数的匿名函数,可以原创 2021-11-21 18:26:12 · 704 阅读 · 0 评论 -
The Rust Programming Language - 第12章 一个I/O项目:构建命令行程序 - 12.6 将错误信息输出到标准错误而不是标准输出
12 一个I/O项目:构建命令行程序本章我们将会构建一个与文件和命令行输入/输出交互的命令行工具来练习已经学过的Rust技能Rust的运行速度、安全性、单二进制文件输出和跨平台支持使其成为创建命令行程序的绝佳选择,所以我们将创建一个我们自己的经典命令行工具grep(globally research a regular expression and print)Grep最简单的使用场景是在特定文件中搜索指定字符串在这个过程中,我们的命令行工具会用到终端功能,读取环境变量来使得用户可以配置工具,打印到原创 2021-11-21 11:56:48 · 293 阅读 · 0 评论 -
The Rust Programming Language - 第12章 一个I/O项目:构建命令行程序 - 12.5 处理环境变量
12 一个I/O项目:构建命令行程序本章我们将会构建一个与文件和命令行输入/输出交互的命令行工具来练习已经学过的Rust技能Rust的运行速度、安全性、单二进制文件输出和跨平台支持使其成为创建命令行程序的绝佳选择,所以我们将创建一个我们自己的经典命令行工具grep(globally research a regular expression and print)Grep最简单的使用场景是在特定文件中搜索指定字符串在这个过程中,我们的命令行工具会用到终端功能,读取环境变量来使得用户可以配置工具,打印到原创 2021-11-21 11:07:46 · 284 阅读 · 0 评论 -
The Rust Programming Language - 第12章 一个I/O项目:构建命令行程序 - 12.4 采用测试驱动开发完善库的功能
12 一个I/O项目:构建命令行程序本章我们将会构建一个与文件和命令行输入/输出交互的命令行工具来练习已经学过的Rust技能Rust的运行速度、安全性、单二进制文件输出和跨平台支持使其成为创建命令行程序的绝佳选择,所以我们将创建一个我们自己的经典命令行工具grep(globally research a regular expression and print)Grep最简单的使用场景是在特定文件中搜索指定字符串在这个过程中,我们的命令行工具会用到终端功能,读取环境变量来使得用户可以配置工具,打印到原创 2021-11-21 09:43:12 · 241 阅读 · 0 评论 -
The Rust Programming Language - 第12章 一个I/O项目:构建命令行程序 - 12.3 重构以改进模块化与错误处理
12 一个I/O项目:构建命令行程序本章我们将会构建一个与文件和命令行输入/输出交互的命令行工具来练习已经学过的Rust技能Rust的运行速度、安全性、单二进制文件输出和跨平台支持使其成为创建命令行程序的绝佳选择,所以我们将创建一个我们自己的经典命令行工具grep(globally research a regular expression and print)Grep最简单的使用场景是在特定文件中搜索指定字符串在这个过程中,我们的命令行工具会用到终端功能,读取环境变量来使得用户可以配置工具,打印到原创 2021-11-20 20:43:58 · 341 阅读 · 0 评论