Rust语言圣经
文章平均质量分 91
书名:Rust语言圣经,涵盖Rust从入门到精通所需的一切知识,同时这也是一本Rust工具书。一个Rust新人从0到1上手写项目需要多久?以前是30天,现在是3-7天。
阅读网址:https://course.rs
孙飞 Sunface
一枚略懂Rust的全栈程序员,喜欢写作&编程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Rust语言圣经43 - 深度解读文档注释
注释和文档好的代码会说话,好的程序员不写注释,这些都是烂大街的"编程界俚语"。但是,如果你真的遇到一个不写注释的项目或程序员,那一定会对它/他"刮目相看"。在之前的章节我们学习了包和模块如何使用,在此章节将进一步学习如何书写文档注释,以及如何使用cargo doc生成项目的文档,最后将以一个包、模块和文档的综合性例子,来将这些知识融会贯通。注释的种类在Rust中,注释分为三类:代码注释,用于说明某一块代码的功能,用户往往是同一个项目的协作开发者文档注释,支持Markdown, 对项目描述、公共原创 2021-12-30 16:58:17 · 2677 阅读 · 0 评论 -
Rust学习教程33 - HashMap
KV存储HashMap和动态数组一样,HashMap也是Rust标准库中提供的集合类型,但是又与动态数组不同,HashMap中存储的是一一映射的KV键值对,并提供了平均复杂度为O(1)的查询方法,当我们希望通过一个Key去查询值时,该类型非常有用,以致于Go语言将该类型设置成了语言级别的内置特性。Rust中哈希类型为HashMap<K,V>, 在其它.原创 2021-12-19 20:04:20 · 4374 阅读 · 0 评论 -
Rust学习教程32 - 动态数组Vec
本文节选自<<Rust语言圣经>>一书欢迎大家加入Rust编程学院,一起学习交流:QQ群:1009730433动态数组Vector动态数组类型用Vec<T>表示,事实上,在之前的章节,它的身影多次出现,我们一直没有细讲,只是简单的把它当作数组处理。动态数组允许你存储多个值,这些值在内存中一个紧挨着另一个排列,因此访问其中某个元素的成本非常低。动态数组只能存储相同类型的元素,如果你想存储不同类型的元素,可以使用之前讲过的枚举类型或者特征对象.总之,当我们想拥.原创 2021-12-19 20:03:37 · 4191 阅读 · 0 评论 -
Rust学习教程31 -返回值Result和?
本文节选自<<Rust语言圣经>>一书欢迎大家加入Rust编程学院,一起学习交流:QQ群:1009730433可恢复的错误Result还记得上一节中,提到的关于文件读取的思考题吧?当时我们解决了读取中如果遇到不可恢复错误该怎么处理,现在来看看,读取过程中,正常返回和遇到可以恢复的错误时该如何处理。假设,我们有一台消息服务器,每个用户都通过websocket连接到该服务器来接收和发送消息,该过程就涉及到socket文件的读写,那么此时,如果一个用户的读写发生了错误,显然不.原创 2021-12-19 20:02:36 · 4201 阅读 · 0 评论 -
Rust学习教程30 - Panic原理剖析
本文节选自<<Rust语言圣经>>一书欢迎大家加入Rust编程学院,一起学习交流:QQ群:1009730433panic深入剖析在正式开始之前,先来思考一个问题: 假设我们想要从文件读取数据,如果失败,你有没有好的办法通知调用者为何失败?如果成功,你有没有好的办法把读取的结果返还给调用者?panic!与不可恢复错误上面的问题在真实场景,其实挺复杂的,让我们先做一个假设:文件读取操作发生在系统启动阶段。那么可以轻易得出一个结论,一旦文件读取失败,那么系统启动也将失败,这.原创 2021-12-19 20:01:47 · 1409 阅读 · 0 评论 -
Rust学习教程28 - 深入类型转换
本文节选自<<Rust语言圣经>>一书欢迎大家加入Rust编程学院,一起学习交流:QQ群:1009730433类型转换Rust是类型安全的语言,因此在Rust中做类型转换不是一件简单的事,这一章节我们将对Rust中的类型转换进行详尽讲解。as转换先来看一段代码:fn main() { let a: i32 = 10; let b: u16 = 100; if a < b { println!("Ten is less than one h.原创 2021-12-19 20:00:30 · 2060 阅读 · 1 评论 -
Rust学习教程27 - 深入了解特征
原文链接:https://course.rs/basic/trait/advance-trait.html 欢迎大家加入Rust编程学院,中国最好的Rust学习社区官网:https://college.rsQQ群:1009730433深入了解特征特征之于Rust更甚于接口之于其他语言,因此特征在Rust中很重要也相对较为复杂,我们决定把特征分为两篇进行介绍,第一篇在之前已经讲过,现在就是第二篇:关于特征的进阶篇,会讲述一些你不常用到但是该了解的特性。关联类型在方法一章中,我.原创 2021-12-13 17:29:35 · 1266 阅读 · 0 评论 -
Rust学习教程26 - 特征对象
原文链接:https://course.rs/basic/trait/trait-object.html 欢迎大家加入Rust编程学院,中国最好的Rust学习社区官网:https://college.rsQQ群:1009730433特征对象在上一节中有一段代码无法通过编译:fn returns_summarizable(switch: bool) -> impl Summary { if switch { Post { //.原创 2021-12-12 22:18:06 · 1208 阅读 · 0 评论 -
Rust学习教程25 - 特征Trait
特征Trait如果我们想定义一个文件系统,那么把该系统跟底层存储解耦是很重要的。文件操作主要包含三个:open、write、read, 这些操作可以发生在硬盘,也可以发生在缓存,可以通过网络也可以通过(我实在编不下去了,大家来帮帮我)。总之如果你要为每一种情况都单.原创 2021-12-11 23:30:45 · 1794 阅读 · 0 评论 -
Rust学习教程24 - 泛型和const泛型
泛型GenericsGo语言在2022年,就要正式引入泛型,被视为在1.0版本后,语言特性发展迈出的一大步,那么为什么泛型这么重要?到底什么是泛型?以及Rust的泛型又有几种?本章将一一为你讲解。我们在编程中,经常有这样的需求:用同一功能的函数处理不同类型的数据,例如两.原创 2021-12-11 19:10:29 · 1935 阅读 · 0 评论 -
Rust学习教程23 - 方法Method
方法Method从面向对象语言过来的同学对于方法肯定不陌生,class里面就充斥着方法的概念,在Rust中方法的概念也大差不差,往往和对象成对出现:object.method()例如读取一个文件写入缓冲区,如果用函数的写法read(f,buffer),用方法的写法f..原创 2021-12-10 23:19:47 · 1138 阅读 · 0 评论 -
Rust学习教程22 - 全模式列表
全模式列表在本书中我们已领略过许多不同类型模式的例子. 本节的目标就是把这些模式语法都罗列出来,方便大家检索查阅。匹配字面值let x = 1;match x { 1 => println!("one"), .原创 2021-12-09 22:03:10 · 1060 阅读 · 0 评论 -
Rust学习教程21 - Option和模式匹配
解构Option在枚举那一章,提到过Option枚举变量是用来解决Rust中一个变量是否有值的问题,定义如下:enum Option<T> { Some(T), None,}总而言之,一个变量要么有值:Some.原创 2021-12-09 22:02:01 · 896 阅读 · 0 评论 -
Rust学习教程20 - match和if let
match和if let先来看一个关于match的简单例子:enum Direction { East, West, North, South,}fn main() { let dire.原创 2021-12-09 22:00:17 · 1864 阅读 · 0 评论 -
Rust学习教程19 - 流程控制
流程控制80后应该都对学校的小混混记忆犹新,在那个时代,小混混们往往都认为自己是地下王者,管控着地下事务的流程,在我看来,他们就像代码中的流程控制一样,无处不在,很显眼,但是又让人懒得重视。言归正传,Rust程序是从上而下顺序执行的,在此过程中,我们可以引入循环、分支等流程控制方式,帮助我们的代码更好的实现相应的功能。使用if来做分支控制if else无处不在 - 鲁迅说但凡你能找到一门编程语言没有if else,那么一定更要反馈给鲁迅,反正不是我说的:) 总之,只要你拥有其它语言的编程经验,原创 2021-12-09 14:37:00 · 794 阅读 · 0 评论 -
Rust学习教程18 - 数组
数组在日常开发中,使用最广的数据结构之一就是数组,在Rust中,最常用的数组有两个,第一个是长度固定且很快速的array,第二个是可动态增长的但是有一点性能损耗的Vector,在本书中,我们称呼array为数组,Vector为动态数组。不知道你们.原创 2021-12-09 12:50:15 · 5816 阅读 · 0 评论 -
Rust学习教程17 - 枚举enum
枚举枚举(enum或enumeration)允许你通过列举可能的成员来定义一个**枚举类型**,例如扑克牌花色:enum PokerSuit { Clubs, Spades, Diamonds, Hearts,}如果在此之前你.原创 2021-12-08 17:29:35 · 2061 阅读 · 0 评论 -
Rust学习教程16 - 结构体struct
结构体在上一节,我们提到需要一个更高级的数据结构来帮助我们更好的抽象问题,而结构体strct恰恰就是这样的复合数据结构,它是由其它数据类型组合而来, 其它语言也有类似的数据结构,不过可能有不同的名称,例如object、record等。结构体跟之.原创 2021-12-08 15:45:15 · 1384 阅读 · 0 评论 -
Rust学习教程15 - 元组tuple
元组元组也是复合类型的一种,因此它是由多种类型组合到一起形成的。元组的长度是固定的,且在声明后,无法进行伸缩。通过以下语法可以创建一个元组:fn main() { let tup: (i32, f64, u8) = (500, 6.4,.原创 2021-12-08 15:43:37 · 1147 阅读 · 0 评论 -
Rust学习教程14 - 函数
函数Rust的函数我们在之前已经见过不少,跟其他语言几乎没有什么区别。因此本章的学习之路将轻松和愉快,骚年们,请珍惜这种愉快,下一章你将体验到不一样的Rust。在函数界,有一个函数只闻其名不闻其声,可以止小孩啼,在程序界只有hello,world!.原创 2021-12-08 15:42:43 · 738 阅读 · 0 评论 -
Rust学习教程13 - 语句与表达式
语句和表达式Rust的函数体是由一系列语句组成,然后最后由一个表达式来返回值,例如:fn add_with_extra(x: i32, y: i32) -> i32 { let x = x + 1; // 语句.原创 2021-12-08 15:41:38 · 658 阅读 · 0 评论 -
Rust学习教程12 - String字符串与切片
字符串在其他语言,字符串往往是送分题,因为实在是太简单了,例如"hello, world"就是字符串章节的几乎全部内容了,对吧?如果你带着这样的想法来学Rust,我保证,绝对会栽跟头,因此这一章大家一定要重视,仔细阅读,这里有很多其它Rust书籍中没有的内容。.原创 2021-12-07 22:15:02 · 4384 阅读 · 0 评论 -
Rust学习教程 - 引用与借用
引用与借用上节中提到,如果仅仅是所有权转移,会让程序变得复杂,那能否像其它编程语言一样,使用某个变量的指针或者引用呢?答案是有的。Rust通过借用(Borrowing)这个概念来达成上述的目的: 获取变量的引用,称之为借用(borrowing)。.原创 2021-12-07 22:12:28 · 2887 阅读 · 1 评论 -
Rust学习教程10 - 所有权
所有权所有的程序都必须和计算机内存打交道,如何从内存中申请空间来存放程序的运行内容,如何在不需要的时候释放这些空间,成了重中之重,也是所有编程语言设计的难点之一。在计算机语言不断演变过程中,出现了三种流派:垃圾回收机制(GC),在程序运行时不断.原创 2021-12-07 22:11:30 · 764 阅读 · 0 评论 -
Rust学习教程09 - 字符、布尔、元类型
字符、布尔、元类型这三个类型所处的地位比较尴尬,你说它们重要吧,在需要的时候也是不可或缺,说它们不重要吧,确实出现的身影不是很多,而且这三个类型都有一个共同点:简单,因此我们统一放在一起讲。字符类型(char)字符,对于没有其它编程经验的新手来说可能.原创 2021-12-06 17:21:05 · 539 阅读 · 0 评论 -
Rust学习教程08 - 数值类型深入剖析
数值类型计算机和数值关联在一起的时间,远比你想象的要长,因此数值类型可以说是有计算机以来就有的类型,下面内容将深入讨论Rust的数值类型以及相关的运算符。整数和浮点数Rust使用一个相对传统的语法来创建整数(1,2,…)和浮点数(1.0,1.1,….原创 2021-12-06 16:42:04 · 1808 阅读 · 0 评论 -
Rust学习教程07 - 变量绑定与解构
变量绑定与解构本节在内容上部分参考了Rust Book鉴于本书的目标读者已经熟练掌握其它任意一门编程语言,因此这里就不再对何为变量进行赘述,让我们开门见山来谈谈,为何Rust选择了手动设定变量可变性。为何要手动设置变量的可变性?在其它大多数语言中,变量一旦创建.原创 2021-12-06 16:41:04 · 799 阅读 · 0 评论 -
Rust学习教程06 - 不仅仅是Hello world
不仅仅是Hello world几乎所有教程中安装的最后一个环节都是hello world,我们也不能免俗,但是在hello world之后,还有一个相亲,阿呸,Rust初印象环节,希望大家喜欢。多国语言的"世界,你好"还记得我们之前讲到的VScode IDE和通过Cargo.原创 2021-12-06 13:25:00 · 691 阅读 · 0 评论 -
Rust学习教程05 - 初识Cargo
认识Cargo但凡经历过C/C++、Go语言1.10版本之前的用户都知道,一个好的包管理工具有多么的重要!!我们那个时候时如此的羡慕nodejs的npm包管理,但是却求而不得,包管理工具最重要的意义就是任何用户拿到你的代码,都能运行起来",而不会因为各种包版本依赖焦头烂额,Go语.原创 2021-12-03 16:51:13 · 1005 阅读 · 0 评论 -
Rust学习教程04 - 墙推VScode
墙推VScode!VScode从15年刚开始推出,我就在使用了,做为第一个吃螃蟹的人,可以说见证了它一路的快速发展,直到现在成为开源世界最火的IDE之一(弱弱的说一句,之一也许可以去掉).顺便歪楼说一句:我预言过三件事, 在13年预言Golang会火遍全世界,同时创建了14-19.原创 2021-12-03 16:50:13 · 934 阅读 · 0 评论 -
Rust学习教程03 - 安装Rust环境
安装Rust强烈建议使用rustup来安装Rust,当然如果你有异心,请寻找其它安装方式,然后再从下一节开始阅读。haha,开个玩笑,读者乃大大,怎么能弃之不顾,所以,注意:如果你不想用或者不能用rustup,请参见Rust其它安装方法现在Rust稳定版特性越来越全了,所.原创 2021-12-03 16:48:42 · 1163 阅读 · 0 评论 -
Rust学习教程02 - Rust语言简介
进入Rust编程世界Rust发展历程Rust 最早是 Mozilla 雇员 Graydon Hoare 的一个个人项目,从 2009 年开始,得到了 Mozilla 研究院的支助,2010 年项目对外公布。2010 ~2011 年间实现的自举。从此以后,Rust 经历了巨大的设计变化和反复(历程极其艰辛),终于在 2015 年 5 月 15日发布了 1.0 版。在这个研发过程中,Rust 建立了一个强大活跃的社区,形成了一整套完善稳定的项目贡献机制(Rust能够飞速发展,与这一点密不可分)。Rust 现原创 2021-12-02 11:17:02 · 1467 阅读 · 0 评论 -
Rust学习教程01 - 书本简介
做任何事情,初心和目标很重要,过程也很重要,那么这里我们就来谈谈这些,关于书,关于Rust在国内的发展。强烈建议读者大大们不要跳过下面的内容,对于你对这本书的理解和定位会很有帮助。关于本书官方书名: Rust编程指南(The Way To Rust)原创 2021-12-02 11:13:36 · 1203 阅读 · 0 评论
分享