rust 笔记 - 变量 && 数据类型

Posted by cwen 2017-07-02

入坑 rust

变量

rust 变量默认不可变,使用 let 声明,当改变强制改变的时候,rust编译器将报错

fn main() {
    let x = 5;
    println!(" x = {}", x);
}

通过变量名之前加 mut 来使变量可变

fn main() {
    let mut x = 5;
    println!("The value of x is: {}", x);
    x = 6;
    println!("The value of x is: {}", x);
}

常量

使用 const 声明, 绑定到一个名称不允许改变的值

const MAX_POINTS: u32 = 100_000;

与变量的区别:

  • 不允许对常量使用 mut:常量不光默认不能变,它总是不能变。
  • 声明常量使用 const 关键字而不是 let,而且必须注明值的类型。
  • 常量可以在任何作用域声明,包括全局作用域,这在一个值需要被很多部分的代码用到时很有用。
  • 最后一个区别是常量只能用于常量表达式,而不能作为函数调用的结果,或任何其他只在运行时计算的值。

数据类型

Rust 有四种基本的标量类型:整型、浮点型、布尔类型和字符类型, Rust 有两个原生的复合类型:元组(tuple)和数组(array)。

元组

元组可以将其他类型组合进一个复合类型的主要方式。

fn main() {
    let tup: (i32, f64, u8) = (500, 6.4, 1);
}

tup变量绑定了整个元组,因为元组被认为是一个单独的复合元素。为了从元组中获取单个的值,可以使用模式匹配(pattern matching)来解构(destructure )元组,像这样:

fn main() {
    let tup = (500, 6.4, 1);

    let (x, y, z) = tup;

    println!("The value of y is: {}", y);
}

除了使用模式匹配解构之外,也可以使用点号(.)后跟值的索引来直接访问他们。

数组

另一个获取一个多个值集合的方式是数组(array)。与元组不同,数组中的每个元素的类型必须相同。Rust 中的数组与一些其他语言中的数组不同,因为 Rust 中的数组是固定长度的:一旦声明,他们的长度不能增长或缩小。

Rust 中数组的值位于中括号中的逗号分隔的列表中:

fn main() {
    let a = [1, 2, 3, 4, 5];
}