chengaofeng
发布于 2024-08-30 / 10 阅读
0
0

Rust的基本语法和概念

Rust 是一种系统编程语言,注重安全性、并发性和性能。以下是 Rust 的一些基本语法和概念:

1. 变量和可变性

Rust 中的变量默认是不可变的,可以使用 mut 关键字声明可变变量。

fn main() {

    let x = 5; // 不可变变量

    // x = 6; // 这行代码会导致编译错误

    let mut y = 5; // 可变变量

    y = 6; // 这行代码是合法的

}

2. 数据类型

Rust 是静态类型语言,常见的数据类型包括整数、浮点数、布尔值和字符。

fn main() {

    let integer: i32 = 42;

    let float: f64 = 3.14;

    let boolean: bool = true;

    let character: char = 'R';

}

3. 函数

函数是 Rust 的基本构建块,可以接受参数并返回值。

fn main() {

    let result = add(5, 3);

    println!("Result: {}", result);

}

fn add(a: i32, b: i32) -> i32 {

    a + b

}

4. 控制流

Rust 支持常见的控制流结构,如 ifloopwhilefor

fn main() {

    let number = 7;

    if number < 5 {

        println!("Condition was true");

    } else {

        println!("Condition was false");

    }

    for i in 1..5 {

        println!("i: {}", i);

    }

}

5. 所有权和借用

Rust 的所有权系统是其内存安全性的核心。每个值都有一个所有者,值在离开作用域时会被释放。初学时,不必过于纠结,多用用再来理解!

fn main() {

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

    let s2 = s1; // s1 的所有权被移动到 s2

    // println!("{}", s1); // 这行代码会导致编译错误,因为 s1 不再有效

    let s3 = String::from("world");

    let s4 = &s3; // s3 被借用

    println!("{}", s3); // s3 仍然有效

    println!("{}", s4);

}

6. 结构体

结构体用于创建自定义数据类型。

struct User {

    username: String,

    email: String,

    sign_in_count: u64,

    active: bool,

}

fn main() {

    let user1 = User {

        username: String::from("someone@example.com"),

        email: String::from("someone@example.com"),

        sign_in_count: 1,

        active: true,

    };

    println!("Username: {}", user1.username);

}

7. 枚举

枚举用于定义一组可能的值。

enum Message {

    Quit,

    Move { x: i32, y: i32 },

    Write(String),

    ChangeColor(i32, i32, i32),

}

fn main() {

    let msg = Message::Write(String::from("Hello, world!"));

    match msg {

        Message::Quit => println!("Quit"),

        Message::Move { x, y } => println!("Move to ({}, {})", x, y),

        Message::Write(text) => println!("Write: {}", text),

        Message::ChangeColor(r, g, b) => println!("Change color to ({}, {}, {})", r, g, b),

    }

}

8. 模块和包

Rust 使用模块和包来组织代码。模块用于将代码分组,包用于分发代码。

mod my_module {

    pub fn my_function() {

        println!("Hello from my_module!");

    }

}

fn main() {

    my_module::my_function();

}

9. 错误处理

Rust 使用 ResultOption 类型进行错误处理。

fn main() {

    let result: Result<i32, &str> = Ok(10);

    match result {

        Ok(value) => println!("Value: {}", value),

        Err(error) => println!("Error: {}", error),

    }

    let option: Option<i32> = Some(5);

    match option {

        Some(value) => println!("Value: {}", value),

        None => println!("No value"),

    }

}

10. 并发

Rust 提供了线程和消息传递的并发模型。

use std::thread;

use std::sync::mpsc;

use std::time::Duration;

fn main() {

    let (tx, rx) = mpsc::channel();

    thread::spawn(move || {

        let val = String::from("hi");

        tx.send(val).unwrap();

    });

    let received = rx.recv().unwrap();

    println!("Got: {}", received);

}

通过掌握这些基本语法和概念,就可以开始编写 Rust 程序,并利用其强大的功能和安全特性,在实践中遇到不会的再深入学习。


评论