引言“代码更像是‘指导原则’,而不是实际规则。”——赫克托·巴博萨ScottMeyers的原版《EffectiveC++》一书取得了巨大的成功,因为它引入了一种新的编程书籍风格,专注于从实际创建C++软件的经验中学习到的指南。值得注意的是,这些指南都是在解释为什么它们是必要的原
类型这本书的第一部分涵盖了关于Rust类型系统的建议。Rust的类型系统比其他主流语言的表达能力更强;它与“学术性”语言如OCaml或Haskell有更多共同点。其中核心的一部分是Rust的枚举类型(enum),它比其他语言中的枚举类型具有更强的表达能力,并且允许使用代数数据类
方法1:使用类型系统表达你的数据结构“谁叫他们是程序员,而不是打字员”——@thingskatedid对于来自其他静态类型编程语言(如C++、Go或Java)的人来说,Rust类型系统的基本概念是非常熟悉的。有一系列具有特定大小的整数类型,包括有符号(i8,i16,i32,
方法2:使用类型系统表达常见行为[方法1]讨论了如何在类型系统中表达数据结构;本节继续讨论在Rust的类型系统中行为的编码。方法(Methods)在Rust的类型系统中,行为首次出现的地方就是将方法添加到数据结构上:这些方法是对该类型实例的操作,通过self标识。这种方式以
方法3:避免匹配Option和Result[方法1]阐述了枚举(enum)的优点,并展示了match表达式如何强制程序员考虑所有可能性;这个方法探讨了在某些情况下,你应尽量避免使用match表达式——至少是显式地。[方法1]还介绍了Rust标准库提供的两个无处不在
第4条:优先使用惯用的错误类型第3条描述了如何使用标准库为Option和Result类型提供的转换,以允许使用?运算符简洁、惯用地处理结果类型。但它没有讨论如何最好地处理作为Result<T,E>第二个类型参数出现的各种不同的错误类型E;这就是本章节的内容。只有当有多
第5条:理解类型转换Rust的类型转换分为三个类别:手动:通过实现From和Intotrait提供的用户定义类型转换半自动:使用as关键字在值之间进行显式转换自动:隐式强制转换为新类型本章节的重点主要是第一种,即手动转换类型,因为后两种大多数情况下不适用于用户定义类
第6条:拥抱newtype模式第1条描述了元组结构体,它的字段没有名字,而是通过数字(self.0)来引用。本条着重介绍的是,只包含一个类型的元组结构体。它是一个新的类型,可以包含和内置类型一样的值。在Rust中,这个模式非常普遍,它叫做:newtype模式。newtype模
这条款项描述了构造器模式:对于复杂的数据类型提供对应的构造器类型buildertype,使得用户可以方便地创造该数据数据类型的实例。Rust要求开发者在创建一个新的struct实例的时候,必须填入struct的所有字段。这样可以保证结构体中永远不会存在未初始化的值,从而保证了代码的安
第8条:熟悉引用和指针类型在一般的编程中,引用(reference)是一种间接访问数据结构的方式,它与拥有该数据结构的变量是分开的。在实践中,引用通常由指针(pointer)来实现。指针是一个数字,它的值是数据结构的变量在内存中的地址。现代CPU通常会对指针施加一些限制:内存地
在编程语言的江湖中,Rust 如同一颗新星,以其独树一帜的安全特性和严谨的类型系统,赢得了开发者的青睐。
近日,一本备受瞩目的新书《Effective Rust》横空出世,它不仅为我们揭示了 Rust 编程的深层智慧,还提供了实用的实战技巧。
本文将从这本书的精彩引言出发,带你领略 Rust 的优势与挑战,并预告将持续翻译分享,为读者带来 Rust 编程的全面解析。
全书由六个部分组成: 类型:围绕 Rust 核心类型系统的建议。 概念:构成 Rust 设计核心思想的建议。 依赖关系:关于使用 Rust 包生态系统的建议。 工具:关于如何通过超越 Rust 编译器来改进代码库的建议。 异步Rust:关于使用 Rust 异步机制的建议。 超越标准Rust:关于在超出 Rust 标准、安全环境时,如何工作的建议。
TON 虚拟机
深入研究TON
Sui源码解析