随笔

Rust

变量

默认不可变 let name = "tom"
加上 mut 可变, let mut name = "sam"

数据类型

let age: u32 = 22

复合数据类型

就像 listarray 一样, 前者可以是混合类型, 后者必须类型统一

元组 tup

let x: (i32, f64, u8) = (500, 6.4, 1);
let tup = (500, 6.4, 1);
// 解构
let (x, y, z) = tup;
// 索引访问
let one = tup.2;

数组 array

let a = [1, 2, 3, 4, 5];
// 下标访问
let first = a[0];

函数

fn another_function() {
    println!("Another function.");
}

语句(Statements)是执行一些操作但不返回值的指令
表达式(Expressions)计算并产生一个值

let y = {
    let x = 3;
    x + 1
};
fn plus_one(x: i32) -> i32 {
    x + 1
}

流程

ifgolang 一样, 条件语句没有括号

let number = 6;

if number % 4 == 0 {
    println!("number is divisible by 4");
} else if number % 3 == 0 {
    println!("number is divisible by 3");
} else if number % 2 == 0 {
    println!("number is divisible by 2");
} else {
    println!("number is not divisible by 4, 3, or 2");
}
loop {
    println!("again!");
}

while number != 0 {
    println!("{}!", number);

    number = number - 1;
}

for number in (1..4).rev() {
    println!("{}!", number);
}

所有权 ownership

Rust 中每一个值都有一个称之为其 所有者(owner)的变量。
值有且只能有一个所有者。
当所有者(变量)离开作用域,这个值将被丢弃。

引用类型拷贝

拷贝会使原变量失效

let s1 = String::from("hello");
let s2 = s1;

println!("{}, world!", s1);
// 此时报错, 因为 s1 已经无效

本文链接:https://note.lilonghe.net/post/rust-lang.html

-- EOF --