Rust 数据类型指南

举报
yd_210525249 发表于 2022/11/03 11:10:05 2022/11/03
【摘要】 日更计划·Day 1 《Rust数据类型指南》

Rust 数据类型

每种编程语言都依赖于数据类型。Rust 编程语言也是如此。Rust 数据类型涵盖了存储数据的各种需求。由于 Rust 是一种静态类型语言,因此数据类型变得更加重要。Rust 编译器在编译时使用数据类型来确保程序是正确的。

Rust数据类型分为两种主要类型:标量(scalar)和复合(compound)。这篇文章将详细说明这两种类型。

Rust 标量数据类型

标量类型存储单个值。它们在其他编程语言中也被称为原始数据类型。

整数类型

整数是最常见的标量数据类型。它基本上是一个没有任何小数部分的数字。我们可以如下表示一个整数:

fn main() {
   let counter: u32 = 5;
}

在 Rust 中,整数可以是无符号或有符号的。此外,整数数据类型有一些变体。我们可以根据数据的要求使用适当的变体。

下表描述了Rust 整数数据类型可用的变体:

LENGTH SIGNED UNSIGNED
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 u128
arch isize usize

整数变体因大小而异。有符号和无符号表示数字可以是负数还是只能是正数;或者换句话说,数字是否必须携带一个符号。当我们期望数字始终为正时,就不需要有符号整数。

签名的变体可以存储从到包含的数字。基本上,n是位数。因此,例如,8 位有符号整数可以存储从 -128 到 127 的数字。此外,无符号 8 位变体可以存储从 0 到 255 的数字。-(2n-1)``2n-1-1**

isizeusize类型取决于计算机的体系结构。在 64 位机器上,这意味着一个大小为 64 位的整数。在 32 位机器上,这相当于 32 位。

浮点类型

Rust 也有两种用于浮点数的原始类型。基本上,这些是带小数点的数字。

Rust 有两种浮点类型。它们是f32f64。基本上,f32用于 32 位和f6464 位。在现代 CPU 上,默认类型是f64. 此外,所有浮点数都是有符号的。

我们可以如下表示一个浮点数:

fn main() {
   let price = 9.99; //This will be f64
   let temperature: f32 = 32.6; //This will be f32
}

布尔(Boolean)类型

Boolean 是 Rust 中第三个重要的标量类型。基本上,布尔值有两个可能的值:truefalse。此外,布尔值的大小为一个字节。

我们可以如下表示一个布尔值:

fn main() {
   let isAvailable: bool = false;
}

字符类型

Rust 也有一个原始的字母类型。这被称为char类型。基本上,这种类型用于声明字符值。

fn main() {
   let option = 'A';
}

文字使用char单引号指定。这与我们使用双引号的字符串文字不同。

此外,charRust 中的类型大小为 4 个字节。它还表示 Unicode 标量值。换句话说,charRust 中的 a 可以表示的不仅仅是 ASCII。

Rust 复合数据类型

使用标量类型,我们现在可以查看Rust 中的复合类型。基本上,复合类型用于将多个值分组为一种类型。

有几种原始复合类型:

元组

元组是一种将具有多种类型的多个值组合成一个复合类型的方法。但是,元组具有固定长度:一旦声明,它们的大小就不能增长或缩小。

让我们看看如何创建一个元组:

fn main() {
   let demoTuple: (u32, f64, u16) = (525, 9.99, 2);
}

基本上,要创建一个元组,我们需要在括号内提供一个逗号分隔的值列表。元组中的每个位置都有一个单独的类型。此外,每种类型都可以不同。上面代码片段中显示的类型注释是可选的。

要从元组中访问元素,我们可以使用模式匹配来解构元组值。

请参考以下示例:

fn main() {
   let demoTuple: (u32, f64, u16) = (525, 9.99, 2);
   let (a, b, c) = demoTuple;
}

a在这里,变量bc将具有元组中的相应值。

此外,可以通过使用句点后跟值的索引来直接访问元组元素。请参考以下示例:

fn main() {
   let demoTuple: (u32, f64, u16) = (525, 9.99, 2);

   let firstNumber = demoTuple.0;
   let secondNumber = demoTuple.1;
}

我们也可以有一个没有任何值的元组。这是一种特殊类型,写为(). 我们也称其为单位类型,其值称为单位值。

数组

拥有多个值的集合的下一种方法是使用数组。然而,数组与元组在一种基本方式上有所不同。在数组中,每个元素必须具有相同的数据类型。

如何在 Rust 中表明一个数组,如下所示:

fn main() {
   let numbers = [4, 8, 7, 3, 2];
}

Rust 中的数组具有固定长度。此外,当我们声明一个数组时,内存分配在堆栈上而不是堆上。

当我们知道数组中的元素数量不会随时间变化时,我们应该使用数组。

数组声明还可以包含数据类型和元素数量:

let numbers: [u32; 5] = [4, 8, 7, 3, 2];

我们还可以使用以下语法为每个元素初始化一个具有相同值的数组:

let numbers: [1; 5];

这将创建一个包含 5 个元素的数组,其中每个元素最初的值为 1。

由于数组大小在编译时是已知的,Rust 在堆栈上分配了一块内存。这允许我们使用索引访问数组的元素。

例如,要访问下面数组中的第二个元素,我们必须使用索引 1。

fn main() {
   let numbers = [4, 8, 7, 3, 2];
   let second = numbers[1];
}

索引从 0 开始。

结论

Rust 数据类型涵盖了典型应用程序可能需要正常运行的所有用例。我们有标量数据类型来存储单个值和复合数据类型来存储一组值。然而,在 Rust 中处理数据的一个重要 概念是所有权借用

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。