Bootstrap

Rust 基础语法

Rust 基础语法

Rust 是一种系统编程语言,由 Mozilla 开发,专注于安全、速度和并发性。它是一种静态类型的语言,具有丰富的类型系统和所有权模型,这使得它在编译时能够提供内存安全保证。Rust 的语法受到了多种编程语言的影响,包括 C++、Haskell 和 OCaml。本文将介绍 Rust 的一些基础语法,帮助初学者快速入门。

变量和数据类型

Rust 中的变量使用 let 关键字声明,并且是默认不可变的。如果需要声明可变变量,可以在变量名前加上 mut 关键字。Rust 是静态类型语言,但大多数情况下,类型推导可以让编译器自动推断出变量的类型。

let x = 42; // x 是不可变的,类型为 i32
let mut y = 3.14; // y 是可变的,类型为 f64

Rust 有几种基本数据类型,包括整数(如 i32u32)、浮点数(如 f64)、布尔值(bool)、字符(char)和元组(tuple)。

函数

Rust 中的函数使用 fn 关键字定义。函数可以接受参数并返回值。函数的返回类型位于参数列表之后,用箭头 -> 指示。

fn add(x: i32, y: i32) -> i32 {
    x + y // Rust 自动返回最后一个表达式的值
}

控制流

Rust 提供了基本的控制流结构,包括 if 表达式、循环和匹配(match)表达式。

if x < 5 {
    println!("x is less than 5");
} else {
    println!("x is 5 or more");
}

// 循环
loop {
    println!("Loop forever!");
}

// 循环中的 break
let mut counter = 0;
loop {
    counter += 1;
    if counter == 10 {
        break;
    }
}

// 匹配表达式
match x {
    1 => println!("One"),
    2 => println!("Two"),
    _ => println!("Something else"), // _ 是通配符,匹配任何值
}

所有权和借用

Rust 的所有权模型是其核心特性之一,它确保了内存安全,无需垃圾回收。在 Rust 中,每个值都有一个所有者,当所有者超出作用域时,该值将被丢弃。

{
    let s = String::from("hello"); // s 是字符串的所有者
} // 这里 s 离开作用域,字符串被丢弃

Rust 还允许借用,即允许引用一个值而不取得其所有权。借用可以是可变的或不可变的。

let mut s = String::from("hello");
let r1 = &s; // 不可变借用
let r2 = &mut s; // 可变借用

结构体和枚举

Rust 使用 struct 关键字定义结构体,使用 enum 关键字定义枚举。

struct User {
    username: String,
    email: String,
    sign_in_count: u64,
    active: bool,
}

enum Color {
    Red,
    Green,
    Blue,
}

错误处理

Rust 使用 ResultOption 类型来处理可能的错误和空值。

fn divide(numerator: f64, denominator: f64) -> Result<f64, String> {
    if denominator == 0.0 {
        Err("Cannot divide by zero".to_string())
    } else {
        Ok(numerator / denominator)
    }
}

模块和包

Rust 使用 mod 关键字创建模块,使用 crate 关键字表示一个包。模块和包有助于组织代码并控制其可见性。

mod front_of_house {
    mod hosting {
        fn add_to_waitlist() {}
    }
}

fn main() {
    front_of_house::hosting::add_to_waitlist();
}

总结

Rust 的基础语法涵盖了变量、数据类型、函数、控制流、所有权和借用、结构体和枚举、错误处理以及模块和包。这些基础知识是进一步学习 Rust 的前提,有助于编写安全、高效的系统级代码。随着对 Rust 的深入,您将接触到更多高级特性,如泛型、特性(traits)、生命周期(lifetimes)和并发编程。

;