在Rust中,提供了f32和f64两个关键字来定义浮点类型变量,默认是f64.
在Rust中,我们声明和定义整型变量时可以使用如下。
fn main() {
// 加
let sum = 5 + 10;
// 减
let difference = 95.5 - 4.3;
// 乘
let product = 4 * 30;
// 除
let quotient = 56.7 / 32.2;
// 求余
let remainder = 43 % 5;
}
由关键字bool定义,取值时true和false。
示例:
let f: bool = false;
通过引用来声明和定义。如下示例:
let c = 'z';
let z = 'ℤ';
let heart_eyed_cat = '';
元组是将多个值与各种类型组合为一个复合类型的一般方法。元组有固定的长度:一旦声明,它们的长度不能增加或减小。
示例:
let tup: (i32, f64, u8) = (500, 6.4, 1);
变量tup绑定到整个元组,因为元组被认为是单个复合元素。要从元组中获取单个值,我们可以使用模式匹配来构造一个元组值,如下所示:
fn main() {
// 定义tup
let tup = (500, 6.4, 1);
// 将x,y,z分别赋值tup.0, tup.1,tup.2 这段代码相当于
// let x = tup.0;
// let y = tup.1;
// let z = tup.2;
let (x, y, z) = tup;
println!("The value of y is: {}", y);
}
除了通过模式匹配破坏结构之外,我们还可以使用句点(.)直接访问元组元素。后面是我们要访问的值的索引,如
fn main() {
// 定义x元组,其中的类型分别是i32,f64和u8
let x: (i32, f64, u8) = (500, 6.4, 1);
// i32的变量定义并赋值
let five_hundred = x.0;
// f64的变量定义并赋值
let six_point_four = x.1;
// u8的变量定义并赋值
let one = x.2;
}
拥有多个值集合的另一种方法是使用数组。与元组不同,数组的每个元素都必须具有相同的类型。Rust中的数组与其他语言中的数组不同,因为Rust中的数组有固定的长度,就像元组一样。
示例:
let a = [1, 2, 3, 4, 5];
您可以使用方括号编写数组的类型,括号中包括每个元素的类型、分号,然后是数组中的元素数,如下所示:
let a: [i32; 5] = [1, 2, 3, 4, 5]; // i32表示数据类型,5表示数组大小
还有一种简写,
let a = [3; 5]; // 定义5个元素的数组a,并且各个元素的初始值为3,等价于let a = [3, 3, 3, 3, 3]
下面我们看下数据类型的示例,这里还是沿用上次工程rust-demo。
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"); // 从控制台输入
// usize - 整数类型用来衡量数据大小的,它的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型。
let index: usize = index
.trim()
.parse()
.expect("Index entered was not a number"); // 判断输入的是不是数字
// 将a数组的中下标为输入数字的元素值赋值给element
// 风险:由于输入的index可能大于等于5,小于0,所以这里会存在数组越界的问题
let element = a[index];
println!(
"The value of the element at index {} is: {}",
index, element
); // 打印输入的下标和元素值
}
编译运行
cargo run
运行结果