Rust
文章平均质量分 96
StudyWinter
持续学习
展开
-
【Rust】Rust学习 第十九章高级特征
现在我们已经学习了 Rust 编程语言中最常用的部分。在第二十章开始另一个新项目之前,让我们聊聊一些总有一天你会遇上的部分内容。你可以将本章作为不经意间遇到未知的内容时的参考。本章将要学习的功能在一些非常特定的场景下很有用处。虽然很少会碰到它们,我们希望确保你了解 Rust 提供的所有功能。原创 2023-08-23 14:19:39 · 1684 阅读 · 0 评论 -
【Rust】Rust学习 第十八章模式用来匹配值的结构
模式是 Rust 中一个很有用的功能,它帮助我们区分不同类型的数据。当用于match语句时,Rust 确保模式会包含每一个可能的值,否则程序将不能编译。let语句和函数参数的模式使得这些结构更强大,可以在将值解构为更小部分的同时为变量赋值。可以创建简单或复杂的模式来满足我们的要求。模式用来匹配值的结构 - Rust 程序设计语言 简体中文版 (bootcss.com)原创 2023-08-22 13:26:07 · 794 阅读 · 0 评论 -
【Rust】Rust学习 第十七章Rust 的面向对象特性
关于 OOP 是什么有很多相互矛盾的定义;在一些定义下,Rust 是面向对象的;在其他定义下,Rust 不是。在本章节中,我们会探索一些被普遍认为是面向对象的特性和这些特性是如何体现在 Rust 语言习惯中的。接着会展示如何在 Rust 中实现面向对象设计模式,并讨论这么做与利用 Rust 自身的一些优势实现的方案相比有什么取舍。面向对象编程(Object-Oriented Programming,OOP)是一种模式化编程方式。这些对象影响了 Alan Kay 的编程架构中对象之间的消息传递。原创 2023-08-21 11:15:18 · 1137 阅读 · 0 评论 -
【Rust】Rust学习 第十六章无畏并发
例如,Erlang 有着优雅的消息传递并发功能,但只有模糊不清的在线程间共享状态的方法。对于高级语言来说,只实现可能解决方案的子集是一个合理的策略,因为高级语言所许诺的价值来源于牺牲一些控制来换取抽象。然而对于底层语言则期望提供在任何给定的情况下有着最高的性能且对硬件有更少的抽象。因此,相比花费大量时间尝试重现运行时并发 bug 出现的特定情况,Rust 会拒绝编译不正确的代码并提供解释问题的错误信息。并发问题的强有力的工具!如果这是一本专注于并发和/或并行的书,我们肯定会更加精确的。原创 2023-08-18 13:17:07 · 1261 阅读 · 0 评论 -
【Rust】Rust学习 第十五章智能指针
为了体会默认情况下智能指针与引用的不同,让我们创建一个类似于标准库提供的Box类型的智能指针。接着学习如何增加使用解引用运算符的功能。从根本上说,Box被定义为包含一个元素的元组结构体,所以下面示例以相同的方式定义了MyBox类型。我们还定义了new函数来对应定义于Box的newMyBox(x)这里定义了一个结构体MyBox并声明了一个泛型参数T,因为我们希望其可以存放任何类型的值。MyBox是一个包含T类型元素的元组结构体。MyBox::new函数获取一个T。原创 2023-08-17 14:21:41 · 971 阅读 · 0 评论 -
【Rust】Rust学习 第十四章进一步认识 Cargo 和 Crates.io
在 Rust 中发布配置)是预定义的、可定制的带有不同选项的配置,他们允许程序员更灵活地控制代码编译的多种选项。每一个配置都彼此相互独立。运行时采用的dev配置和运行的release配置。dev配置被定义为开发时的好的默认配置,release配置则有着良好的发布构建的默认配置。构建输出中的dev和release表明编译器在使用不同的配置。当项目的Cargo.toml文件中没有任何部分的时候,Cargo 会对每一个配置都采用默认设置。通过增加任何希望定制的配置对应的。原创 2023-08-16 13:50:06 · 1672 阅读 · 0 评论 -
【Rust】Rust学习 第十三章Rust 中的函数式语言功能:迭代器与闭包
Rust 的设计灵感来源于很多现存的语言和技术。其中一个显著的影响就是函数式编程风格通常包含将函数作为参数值或其他函数的返回值、将函数赋值给变量以供之后执行等等。原创 2023-08-15 13:44:59 · 1369 阅读 · 0 评论 -
【Rust】Rust学习 第十一章编写自动化测试
Rust 是一个相当注重正确性的编程语言,不过正确性是一个难以证明的复杂主题。Rust 的类型系统在此问题上下了很大的功夫,不过它不可能捕获所有种类的错误。为此,Rust 也在语言本身包含了编写软件测试的支持。编写一个叫做add_two的将传递给它的值加二的函数。它的签名有一个整型参数并返回一个整型值。当实现和编译这个函数时,Rust 会进行所有目前我们已经见过的类型检查和借用检查,例如,这些检查会确保我们不会传递String或无效的引用给这个函数。Rust 所。原创 2023-08-13 15:52:54 · 2308 阅读 · 2 评论 -
【Rust】Rust学习 第十章泛型、trait 和生命周期
当使用泛型定义函数时,我们在函数签名中通常为参数和返回值指定数据类型的位置放置泛型。以这种方式编写的代码将更灵活并能向函数调用者提供更多功能,同时不引入重复代码。回到largest函数上,示例 中展示了两个提供了相同的寻找 slice 中最大值功能的函数。assert_eq!println!assert_eq!这两个函数有着相同的代码,所以让我们在一个单独的函数中引入泛型参数来消除重复。原创 2023-08-12 19:18:36 · 906 阅读 · 1 评论 -
【Rust】Rust学习 第九章错误处理
和可恢复错误通常代表向用户报告错误和重试操作是合理的情况,比如未找到文件。不可恢复错误通常是 bug 的同义词,比如尝试访问超过数组结尾的位置。大部分语言并不区分这两类错误,并采用类似异常这样方式统一处理他们。panic!.1 panic!与不可恢复的错误突然有一天,代码出问题了,而你对此束手无策。对于这种情况,panic!当执行这个宏时,程序会打印出一个错误信息,展开并清理栈数据,然后接着退出。出现这种情况的场景通常是检测到一些类型的 bug,而且程序员并不清楚该如何处理它。原创 2023-08-11 10:28:29 · 1206 阅读 · 0 评论 -
【Rust】Rust学习 第八章常见集合
Rust 标准库中包含一系列被称为)的非常有用的数据结构。大部分其他数据类型都代表一个特定的值,不过集合可以包含多个值。不同于内建的数组和元组类型,这些集合指向的数据是储存在堆上的,这意味着数据的数量不必在编译时就已知,并且还可以随着程序的运行增长或缩小。每种集合都有着不同功能和成本,而根据当前情况选择合适的集合,这是一项始终成长的技能。三个在 Rust 程序中被广泛使用的集合:vectorstringStringhash mapmap。原创 2023-08-10 11:16:07 · 980 阅读 · 1 评论 -
【Rust】Rust学习 第七章使用包、Crate和模块管理不断增长的项目
模块让我们可以将一个 crate 中的代码进行分组,以提高可读性与重用性。模块还可以控制项的私有性,即项是可以被外部代码使用的(public),还是作为一个内部实现的内容,不能被外部代码使用(private案例:在餐饮业,餐馆中会有一些地方被称之为前台),还有另外一些地方被称之为后台前台是招待顾客的地方,在这里,店主可以为顾客安排座位,服务员接受顾客下单和付款,调酒师会制作饮品。后台则是由厨师工作的厨房,洗碗工的工作地点,以及经理做行政工作的地方组成。原创 2023-08-09 14:39:40 · 1280 阅读 · 1 评论 -
【Rust】Rust学习 第六章枚举和模式匹配
定义一个枚举V4,V6,现在IpAddrKind就是一个可以在代码中使用的自定义数据类型了。枚举值可以像这样创建IpAddrKind注意枚举的成员位于其标识符的命名空间中,并使用两个冒号分开。这么设计的益处是现在和都是IpAddrKind类型的。V4,V6,这里定义了一个有两个字段的结构体IpAddrIpAddrKind(之前定义的枚举)类型的kind字段和String类型address字段。有这个结构体的两个实例。第一个,home,它的kind的值是与之相关联的地址数据是。原创 2023-08-08 14:49:55 · 1291 阅读 · 1 评论 -
【Rust】Rust学习 第五章使用结构体组织相关联的数据
定义结构体,需要使用struct关键字并为整个结构体提供一个名字。结构体的名字需要描述它所组合的数据的意义。接着,在大括号中,定义每一部分数据的名字和类型,我们称为字段fieldactive: bool, // 最后多了一个,实例化(不可变变量)// 定义结构体// 实例化可变变量// 可变变量,字段都可以修改// 可以修改字段初始化简写语法// 字段初始化简写语法User {email,username,通过已经存着的变量初始化新变量。原创 2023-08-07 16:30:23 · 1260 阅读 · 1 评论 -
【Rust】Rust学习 第四章认识所有权
所有权、借用和 slice 这些概念让 Rust 程序在编译时确保内存安全。Rust 语言提供了跟其他系统编程语言相同的方式来控制你使用的内存,但拥有数据所有者在离开作用域后自动清除其数据的功能意味着你无须额外编写和调试相关的控制代码。原创 2023-08-07 14:02:31 · 933 阅读 · 0 评论 -
【Rust】Rust学习第三章常见编程概念
文档:Rust 程序设计语言 - Rust 程序设计语言 简体中文版 (bootcss.com)原创 2023-08-02 14:09:14 · 1142 阅读 · 0 评论