方法1:使用类型系统表达你的数据结构“谁叫他们是程序员,而不是打字员”——@thingskatedid对于来自其他静态类型编程语言(如C++、Go或Java)的人来说,Rust类型系统的基本概念是非常熟悉的。有一系列具有特定大小的整数类型,包括有符号(i8,i16,i32,
方法2:使用类型系统表达常见行为[方法1]讨论了如何在类型系统中表达数据结构;本节继续讨论在Rust的类型系统中行为的编码。方法(Methods)在Rust的类型系统中,行为首次出现的地方就是将方法添加到数据结构上:这些方法是对该类型实例的操作,通过self标识。这种方式以
这条款项描述了构造器模式:对于复杂的数据类型提供对应的构造器类型buildertype,使得用户可以方便地创造该数据数据类型的实例。Rust要求开发者在创建一个新的struct实例的时候,必须填入struct的所有字段。这样可以保证结构体中永远不会存在未初始化的值,从而保证了代码的安
方法3:避免匹配Option和Result[方法1]阐述了枚举(enum)的优点,并展示了match表达式如何强制程序员考虑所有可能性;这个方法探讨了在某些情况下,你应尽量避免使用match表达式——至少是显式地。[方法1]还介绍了Rust标准库提供的两个无处不在
第8条:熟悉引用和指针类型在一般的编程中,引用(reference)是一种间接访问数据结构的方式,它与拥有该数据结构的变量是分开的。在实践中,引用通常由指针(pointer)来实现。指针是一个数字,它的值是数据结构的变量在内存中的地址。现代CPU通常会对指针施加一些限制:内存地
第4条:优先使用惯用的错误类型第3条描述了如何使用标准库为Option和Result类型提供的转换,以允许使用?运算符简洁、惯用地处理结果类型。但它没有讨论如何最好地处理作为Result<T,E>第二个类型参数出现的各种不同的错误类型E;这就是本章节的内容。只有当有多
第5条:理解类型转换Rust的类型转换分为三个类别:手动:通过实现From和Intotrait提供的用户定义类型转换半自动:使用as关键字在值之间进行显式转换自动:隐式强制转换为新类型本章节的重点主要是第一种,即手动转换类型,因为后两种大多数情况下不适用于用户定义类
第6条:拥抱newtype模式第1条描述了元组结构体,它的字段没有名字,而是通过数字(self.0)来引用。本条着重介绍的是,只包含一个类型的元组结构体。它是一个新的类型,可以包含和内置类型一样的值。在Rust中,这个模式非常普遍,它叫做:newtype模式。newtype模