Rust 入门篇:数据类型 - Data Types
-
houseme
- 04 Apr, 2022
Rust 是一种系统级编程语言,具有静态类型系统,能够提供内存安全性和并发安全性,同时保持高性能。了解 Rust 的数据类型是学习该语言的重要一步。本教程将深入探讨 Rust 的数据类型,以及如何在实际项目中应用它们。
数据类型的分类
Rust 的数据类型主要分为两大类:标量类型(Scalar Types)和复合类型(Compound Types)。
1. 标量类型(Scalar Types)
标量类型代表单个值。Rust 的标量类型包括:
- 整数类型(Integer Types):表示整数值,如
i32
、u64
等。 - 浮点数类型(Floating-Point Types):表示带有小数部分的数字,如
f32
、f64
。 - 布尔类型(Boolean Type):表示逻辑值,只能是
true
或false
。 - 字符类型(Character Type):表示单个 Unicode 字符,如
char
。
2. 复合类型(Compound Types)
复合类型允许你将多个值组合成一个类型。Rust 的复合类型包括:
- 元组类型(Tuple Type):表示固定大小的有序列表,每个元素可以有不同的类型。
- 数组类型(Array Type):表示固定大小的相同类型的值的集合。
标量类型详解
1. 整数类型(Integer Types)
Rust 提供了有符号和无符号的整数类型,分别表示正负值和非负值。以下是常见的整数类型及其取值范围:
i8
: -128 到 127i16
: -32,768 到 32,767i32
: -2,147,483,648 到 2,147,483,647i64
: -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807u8
: 0 到 255u16
: 0 到 65,535u32
: 0 到 4,294,967,295u64
: 0 到 18,446,744,073,709,551,615
fn main() {
let a: i32 = 42;
let b: u8 = 255;
println!("Integer: {}", a);
println!("Unsigned Integer: {}", b);
}
2. 浮点数类型(Floating-Point Types)
Rust 提供了两种浮点数类型:f32
和f64
,分别对应单精度和双精度浮点数。
fn main() {
let c: f32 = 3.14;
let d: f64 = 6.28;
println!("Float: {}", c);
println!("Double: {}", d);
}
3. 布尔类型(Boolean Type)
布尔类型只有两个可能的值:true
和false
。
fn main() {
let e: bool = true;
let f: bool = false;
println!("Boolean: {}", e);
println!("Boolean: {}", f);
}
4. 字符类型(Character Type)
字符类型表示 Unicode 字符,用单引号'
包裹。
fn main() {
let g: char = 'A';
println!("Character: {}", g);
}
复合类型详解
1. 元组类型(Tuple Type)
元组是固定大小的有序列表,每个元素可以有不同的类型。
fn main() {
let tuple: (i32, f64, char) = (42, 3.14, 'A');
println!("Tuple: {:?}", tuple);
}
2. 数组类型(Array Type)
数组是固定大小的相同类型的值的集合。
fn main() {
let array: [i32; 3] = [1, 2, 3];
println!("Array: {:?}", array);
}
自定义数据类型
1. 结构体类型(Struct Type)
结构体允许将不同类型的值组合成一个单独的类型。
实战指南:
struct Person {
name: String,
age: i32,
}
fn main() {
let person1 = Person {
name: String::from("Alice"),
age: 30,
};
println!("Name: {}", person1.name);
println!("Age: {}", person1.age);
}
2. 枚举类型(Enum Type)
枚举类型允许创建一个类型,它的值来自于一个有限的集合。
实战指南:
enum TrafficLight {
Red,
Green,
Yellow,
}
fn main() {
let current_light = TrafficLight::Red;
match current_light {
TrafficLight::Red => println!("Stop!"),
TrafficLight::Green => println!("Go!"),
TrafficLight::Yellow => println!("Caution!"),
}
}
实战指南
示例 1:计算圆的面积
fn main() {
const PI: f64 = 3.14159;
let radius: f64 = 2.0;
let area = PI * radius * radius;
println!("The area of the circle is: {}", area);
}
示例 2:交换两个变量的值
fn main() {
let mut a: i32 = 5;
let mut b: i32 = 10;
println!("Before swap: a = {}, b = {}", a, b);
let temp = a;
a = b;
b = temp;
println!("After swap: a = {}, b = {}", a, b);
}
示例 3:使用元组和数组存储数据
fn main() {
let person: (&str, i32, &str) = ("John", 30, "Developer");
println!("Name: {}, Age: {}, Occupation: {}", person.0, person.1, person.2);
let numbers: [i32; 5] = [1, 2, 3, 4, 5];
println!("First number: {}", numbers[0]);
}
通过本教程和示例,你应该对 Rust 的数据类型有了更深入的了解,并且能够在实际项目中灵活运用它们。继续学习并探索 Rust 的丰富功能,以提高你的编程技能!
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)