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
**
isize
和usize
类型取决于计算机的体系结构。在 64 位机器上,这意味着一个大小为 64 位的整数。在 32 位机器上,这相当于 32 位。
浮点类型
Rust 也有两种用于浮点数的原始类型。基本上,这些是带小数点的数字。
Rust 有两种浮点类型。它们是f32
和f64
。基本上,f32
用于 32 位和f64
64 位。在现代 CPU 上,默认类型是f64
. 此外,所有浮点数都是有符号的。
我们可以如下表示一个浮点数:
fn main() {
let price = 9.99; //This will be f64
let temperature: f32 = 32.6; //This will be f32
}
布尔(Boolean)类型
Boolean 是 Rust 中第三个重要的标量类型。基本上,布尔值有两个可能的值:true
和false
。此外,布尔值的大小为一个字节。
我们可以如下表示一个布尔值:
fn main() {
let isAvailable: bool = false;
}
字符类型
Rust 也有一个原始的字母类型。这被称为char
类型。基本上,这种类型用于声明字符值。
fn main() {
let option = 'A';
}
文字使用char
单引号指定。这与我们使用双引号的字符串文字不同。
此外,char
Rust 中的类型大小为 4 个字节。它还表示 Unicode 标量值。换句话说,char
Rust 中的 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
在这里,变量b
和c
将具有元组中的相应值。
此外,可以通过使用句点后跟值的索引来直接访问元组元素。请参考以下示例:
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 中处理数据的一个重要 概念是所有权
和借用
。
- 点赞
- 收藏
- 关注作者
评论(0)