跳到主要内容

· 阅读需 23 分钟
Hanbin Che

枚举(enumerations),也被称作 enums。枚举允许你通过列举可能的 成员(variants) 来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会探索一个特别有用的枚举,叫做 Option,它代表一个值要么是某个值要么什么都不是。然后会讲到在 match 表达式中用模式匹配,针对不同的枚举值编写相应要执行的代码。最后会介绍 if let,另一个简洁方便处理代码中枚举的结构。

枚举是一个很多语言都有的功能,不过不同语言中其功能各不相同。Rust 的枚举与 F#OCamlHaskell 这样的函数式编程语言中的 代数数据类型(algebraic data types)最为相似。

· 阅读需 25 分钟
Hanbin Che

struct,或者 structure,是一个自定义数据类型,允许你命名和包装多个相关的值,从而形成一个有意义的组合。如果你熟悉一门面向对象语言,struct 就像对象中的数据属性。在本章中,我们会对元组和结构体进行比较和对比,以及演示如何定义和实例化结构体,并讨论如何定义关联函数,特别是被称为方法的那种关联函数,以指定与结构体类型相关的行为。你可以在程序中基于结构体和枚举(enum)创建新类型,以充分利用 Rust 的编译时类型检查。

· 阅读需 44 分钟
Hanbin Che

所有权(系统)是 Rust 最为与众不同的特性,它让 Rust 无需垃圾回收器(garbage collector)即可保证内存安全。因此,理解 Rust 中所有权的运作方式非常重要。在本章中,我们将讨论所有权以及相关功能:借用、slice 以及 Rust 如何在内存中存放数据。

· 阅读需 7 分钟
Hanbin Che

IEEE 754 是一个由电子电气工程师协会(Institute of Electrical and Electronics Engineers,简称 IEEE)制定的标准,用于定义浮点数的表示和运算规则。这个标准定义了浮点数的二进制表示方式、运算规则和精度等重要内容,广泛应用于计算机科学和工程领域,以确保浮点数在不同计算平台上的一致性和可移植性。

IEEE 754 标准通常包括以下几个方面的内容:

  1. 浮点数格式:IEEE 754 定义了多种浮点数格式,包括单精度(32 位)、双精度(64 位)和拓展精度格式,它们都具有固定的位数用于表示符号、指数和尾数(也称为尾数、尾数位数),以及规定了如何将二进制位解释为实际的浮点数值。

  2. 特殊值:IEEE 754 标准还定义了特殊值,如正无穷大、负无穷大、NaN(非数值)等,以处理在浮点数运算中可能出现的异常情况。

  3. 浮点数运算:标准规定了浮点数的四则运算(加法、减法、乘法和除法)和取余等操作的规则,包括舍入规则和溢出处理方式。

  4. 精度:IEEE 754 标准定义了浮点数的精度和有效位数,以及舍入方式,以确保在不同计算平台上的一致性。

  5. 转换:标准还定义了浮点数和整数之间的相互转换规则。

  6. 语言支持:IEEE 754 标准被广泛支持和实现在各种编程语言和硬件平台中,包括 C、C++、Java、Python 等,以及 CPU、GPU 和 FPGA 等硬件平台。

IEEE 754 标准的主要目标是提供一种通用的浮点数表示和运算方式,以便不同计算平台上的程序能够以一致的方式处理浮点数。然而,由于浮点数运算的特殊性质,开发人员需要了解标准中的一些细节,以避免由于舍入误差和浮点数精度问题而导致的潜在问题。在编写需要高精度浮点数运算的应用程序时,可能需要额外的精度控制和数值分析技巧。

· 阅读需 46 分钟
Hanbin Che

变量和可变性

在 Rust 中,变量和可变性是两个重要的概念,它们用于管理数据的状态和访问权限。

  1. 变量(Variables)

    • 在 Rust 中,变量是用于存储和管理数据的标识符。变量可以具有不同的数据类型,包括整数、浮点数、布尔值、字符、结构体等。
    • 变量默认是不可变的(immutable),这意味着一旦赋值后,其值不能被修改。例如:
      let x = 5;  // 不可变变量
    • 不可变变量的好处是可以确保数据不会在不经意间被修改,从而提高了代码的安全性。
  2. 可变性(Mutability)

    • 在 Rust 中,如果需要更改变量的值,可以使用mut关键字来声明可变变量。可变变量允许在其作用域内修改其值。例如:
      let mut y = 10;  // 可变变量
      y = y + 1; // 可以修改 y 的值
    • 使用可变性时,需要谨慎,因为它引入了潜在的并发问题和不可预测的行为。Rust 的可借用规则和所有权系统帮助确保了可变性的安全使用。

总结:

  • 变量用于存储数据,可以是不可变的(默认情况下)或可变的(使用mut关键字声明)。
  • 不可变变量在赋值后不能更改,这有助于代码的安全性和可维护性。
  • 可变变量允许在其作用域内修改其值,但需要注意可变性引入的潜在问题。
  • Rust 的所有权系统和借用规则有助于确保可变性的安全使用,防止数据竞态和内存不安全问题。