网站框架包括哪些,电商网站开发数据库表,浙江建设网站是多少,ssr网站开发目录 思维导图
1. 数据类型概述
1.1 标量类型
1.1.1 整数类型
1.1.2 浮点数类型
1.1.3 布尔类型
1.1.4 字符类型
1.2 复合类型
1.2.1 元组类型
1.2.2 数组类型
2. 类型注解与类型推断
3. 整数溢出处理
4. 数字运算
5. 示例 思维导图 1. 数据类型概述
Rust是一种静…
目录 思维导图
1. 数据类型概述
1.1 标量类型
1.1.1 整数类型
1.1.2 浮点数类型
1.1.3 布尔类型
1.1.4 字符类型
1.2 复合类型
1.2.1 元组类型
1.2.2 数组类型
2. 类型注解与类型推断
3. 整数溢出处理
4. 数字运算
5. 示例 思维导图 1. 数据类型概述
Rust是一种静态类型语言所有变量的类型在编译时必须明确。Rust支持两种主要的数据类型标量类型和复合类型。
1.1 标量类型
标量类型表示单一值Rust的四种主要标量类型包括
整数Integer浮点数Floating-point布尔值Boolean字符Character
1.1.1 整数类型
整数类型是没有小数部分的数字Rust提供了多种整数类型包括有符号和无符号的8位、16位、32位、64位和128位整数。例如u32表示一个无符号32位整数范围从0到4294967295。整数的类型可以通过在数字后添加后缀来指定如57u8表示8位无符号整数。isize 和 usize 类型取决于程序运行的计算机架构表格中用“arch”表示如果是在 64 位架构上则为 64 位如果是在 32 位架构上则为 32 位。
整数类型 LengthSignedUnsigned8-biti8u816-biti16u1632-biti32u3264-biti64u64128-biti128u128archisizeusize
Rust特殊的编写字面量
整数字面量 Number literalsExampleDecimal98_222Hex0xffOctal0o77Binary0b1111_0000Byte (u8 Only)bA
1.1.2 浮点数类型
Rust有两种浮点数类型f32和f64分别表示32位和64位的浮点数。默认情况下Rust使用f64因为它在现代CPU上与f32的速度相近但精度更高。
1.1.3 布尔类型
布尔类型只有两个值true和false在Rust中用bool表示。
1.1.4 字符类型
Rust的字符类型用char表示支持Unicode标量值可以表示多种语言的字符和符号。字符使用单引号表示如z或?。
1.2 复合类型
复合类型可以将多个值组合成一个类型Rust的两种基本复合类型是元组Tuple和数组Array。
1.2.1 元组类型
元组是将多个不同类型的值组合在一起的固定长度的集合。创建元组的语法为使用括号包裹的逗号分隔的值例如let tup: (i32, f64, u8) (500, 6.4, 1);。元组的元素可以通过模式匹配进行解构。
1.2.2 数组类型
数组是一种固定长度的集合所有元素必须是同一类型。数组的定义方式为使用方括号包裹的逗号分隔的值例如let a [1, 2, 3, 4, 5];。数组的类型可以通过指定元素类型和长度来定义如let a: [i32; 5] [1, 2, 3, 4, 5];。数组的元素可以通过索引访问例如let first a[0];。如果尝试访问超出数组范围的索引Rust会在运行时崩溃并提示错误。
2. 类型注解与类型推断
Rust的编译器通常能够根据变量的值和使用方式推断出类型但在某些情况下例如从字符串转换为数字时需要显式添加类型注解。示例代码如下
let guess: u32 42.parse().expect(Not a number!);[14]如果未提供类型注解编译器会提示需要更多信息。
3. 整数溢出处理
Rust在调试模式下会检查整数溢出导致程序在运行时崩溃。在发布模式下Rust会进行二进制补码包装超出范围的值会“回绕”到最小值。
4. 数字运算
Rust支持基本的数学运算包括加、减、乘、除和取余。示例代码展示了如何在let语句中使用这些运算
let sum 5 10;
let difference 95.5 - 4.3;
let product 4 * 30;
let quotient 56.7 / 32.2;
let remainder 43 % 5;5. 示例 类型注解示例 fn main() {let guess: u32 42.parse().expect(Not a number!);
}该示例展示了如何使用类型注解来指定变量guess的类型为u32。 整数类型示例 fn main() {let x: (i32, f64, u8) (500, 6.4, 1);
}这里定义了一个元组x包含不同类型的整数和浮点数。 浮点数示例 fn main() {let x 2.0; // f64let y: f32 3.0; // f32
}该示例展示了如何声明浮点数变量默认类型为f64。 布尔类型示例 fn main() {let t true;let f: bool false; // with explicit type annotation
}该示例展示了布尔类型的使用布尔值可以是true或false。 字符类型示例 fn main() {let c z;let z: char ℤ; // with explicit type annotationlet heart_eyed_cat ;
}这里展示了如何声明字符类型的变量Rust的字符类型支持Unicode。 数组示例 fn main() {let a [1, 2, 3, 4, 5];
}该示例展示了如何定义一个包含多个整数的数组。 访问数组元素示例 fn main() {let a [1, 2, 3, 4, 5];let first a[0];let second a[1];
}这里展示了如何通过索引访问数组中的元素。 无效数组元素访问示例 use std::io;
fn main() {let a [1, 2, 3, 4, 5];println!(Please enter an array index.);let mut index String::new();io::stdin().read_line(mut index).expect(Failed to read line);let index: usize index.trim().parse().expect(Index entered was not a number);let element a[index];println!(The value of the element at index {index} is: {element});
}此代码编译成功。如果使用cargo run运行此代码并输入0、1、2、3或4程序将打印出数组中该索引处的对应值。如果输入超出数组末尾的数字例如10您将看到如下输出 thread main panicked at src/main.rs:19:19:
index out of bounds: the len is 5 but the index is 10
note: run with RUST_BACKTRACE1 environment variable to display a backtrace 程序在使用无效值进行索引操作时导致了运行时错误。程序以错误信息退出并未执行最后的println!语句。 注意当你尝试使用索引访问元素时Rust 会检查你指定的索引是否小于数组长度。如果索引大于或等于长度Rust 程序就会崩溃。因此这种检查必须在运行时进行尤其是在这种情况下因为编译器无法预先知道用户稍后运行代码时会输入什么值。这是Rust的一个内存安全原则当用户提供错误的索引时可能会访问到无效的内存。Rust 通过立即退出而不是允许内存访问并继续运行来保护你免受此类错误的影响。