Rust中的数据类型

本文介绍了Rust编程语言中的数据类型,包括标量类型(整型、浮点型、布尔型、字符型)和复合类型(元组、数组)。文章详细讲解了每种类型的特点、使用方法以及相关的数值运算和内存管理机制,展示了Rust在类型安全和性能方面的优势。

让我们来谈谈 Rust 中的数据类型。在我之前的文章中,我讨论了 Rust 中的变量、遮蔽和可变性。

Rust 是一种系统编程语言,其设计考虑了性能、安全性和可靠性。支持这些目标的基本概念之一是 数据类型 。Rust 中的每个值都有一个特定的 数据类型 ,这有助于编译器理解该值的行为方式。在本文中,让我们深入了解 Rust 中的数据类型。我们将学习以下 Rust 中的数据类型,并了解它们在底层是如何工作的:

  1. 标量
  2. 浮点类型
  3. 数值运算
  4. 布尔值
  5. 字符类型
  6. 复合类型

Rust 中的静态类型

Rust 是一种 静态类型 的语言。这意味着每个变量的类型都必须在 编译时 知道,从而可以及早发现错误并提高内存管理效率。

通常,Rust 足够聪明,可以根据上下文 推断 类型:

let x = 5; // 默认推断为 i32

但是,当存在歧义时,你必须提供 类型注解

let guess: u32 = "42".parse().expect("Not a number!");

Rust 的优点在于它会通知你代码中的错误,这对安全性至关重要。

标量类型

标量类型表示 单个值 。Rust 包括四种主要的标量类型:

1. 整型

整数是不带小数点的整数。它们可以是 有符号 的 ( i) 或 无符号 的 ( u),并且具有各种大小:

  • 有符号整数使用 补码 存储负数和正数。
  • 无符号整数仅存储正值。

整数溢出

Rust 防止 溢出 (例如,将 256 分配给 u8):

  • 调试模式 下,你的程序会 panic
  • 发布模式 下,Rust 环绕 (例如,256 → 0)。

为了显式处理溢出,Rust 提供了如下方法:

  • wrapping_add
  • checked_add
  • overflowing_add
  • saturating_add

2. 浮点数

Rust 支持:

  • f32 (32 位)
  • f64 (64 位,默认)

例子:

let x = 2.0; // f64
let y: f32 = 3.0;

3. 布尔值

Rust 中的 bool 类型表示 truefalse 值。

let t = true;
let f: bool = false;

主要用于像 if 表达式这样的控制流中。

Rust 的 char 类型表示单个 Unicode 标量值,使用 单引号

let c = 'z';
let z: char = 'ℤ';
let emoji = '😻';

结果

4. 数值运算

在 Rust 中,所有数字类型——无论是整数(i32u8 等)还是浮点数(f32f64)——都支持 基本数学运算 ,这在大多数编程语言中都很常见。 这些操作包括:

  • 加法 ( +)
  • 减法 ( -)
  • 乘法 ( *)
  • 除法 ( /)
  • 余数 或模数 ( %)

让我们通过示例来了解每一个。

fn main() {

    // addition
    let sum = 5 + 10;

    // subtraction
    let difference = 95.5 - 4.3;

    // multiplication
    let product = 4 * 30;

    // division
    let quotient = 56.7 / 32.2;
    let truncated = -5 / 3; // 结果为 -1

    // remainder
    let remainder = 43 % 5;

     println!("The sum is: {sum}");
      println!("The difference is: {difference}");
       println!("The product is: {product}");
       println!("The quotient is: {quotient}");
       println!("The value is: {truncated}");
        println!("The remainder is: {remainder}");
}

结果是

复合类型

在 Rust 中,元组 是一种复合类型,允许你将 多个值 组合成一个单元。使元组特别有用的是,元组中的每个元素都可以具有不同的类型 ,这与数组不同,数组中的所有元素必须是相同的类型。

什么是元组?

  • 元组写为 逗号分隔的值列表 ,括在 括号 () 中。
  • 一旦声明,元组就具有 固定长度 ,创建后无法添加或删除元素。
  • 你可以在元组中 混合类型 ,例如组合整数、浮点数和布尔值。

例如;

fn main() {

    let tup = (500, 6.4, 1);

    let (_x, _y, _z) = tup;

    println!("The value of y is: {_z}");

}

数组类型

了解 Rust 中的数组

数组 是在 Rust 中存储值集合的另一种方式。数组是一种 复合类型 ,类似于元组,但它们具有自己独特的特征。

数组的主要特征

  1. 相同类型

    数组中的所有元素必须是 相同的数据类型

  2. 固定长度

    Rust 中数组的大小是 固定的 ——一旦创建,就无法添加或删除元素。

为什么要使用数组?

在以下情况下,Rust 数组很有用:

  • 事先知道元素的数量
  • 你希望将数据存储在 上(为了性能和可预测性)。
  • 你不需要在创建后更改元素的数量。

例如:

fn main() {

  let months = ["January", "February", "March", "April", "May", "June", "July",\
              "August", "September", "October", "November", "December"];

    println!("{:?}", months);

}

  • 原文链接: medium.com/@estheraladio...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
estheraladioche569
estheraladioche569
江湖只有他的大名,没有他的介绍。