Skip to content
当前页大纲

搭建 Visual Studio Code 开发环境

rust
首先,需要安装最新版的 Rust 编译工具和 Visual Studio Code

 Rust 编译工具:https://www.rust-lang.org/zh-CN/tools/install

 Visual Studio Code:https://code.visualstudio.com/Download

 Rust 的编译工具依赖 C 语言的编译工具,这意味着你的电脑上至少已经存在一个 C 语言的编译环境。如果你使用的是 Linux 系统,往往已经具备了 GCC 或 clang。如果你使用的是 macOS,需要安装 Xcode。如果你是用的#### 是 Windows 操作系统,你需要安装 Visual Studio 2013 或以上的环境(需要 C/C++ 支持)以使用 MSVC 或安装 MinGW + GCC 编译环境(Cygwin 还没有测试)。

安装 Rust 编译工具

rust
Rust 编译工具可以去官方网站下载: https://www.rust-lang.org/zh-CN/tools/install。

 macOS、Linux 或其它类 Unix 系统要下载 Rustup 并安装 Rust,请在终端中运行以下命令:

 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
 Windows 要下载 rustup-init.exe 可执行文件。

 下载好的 RustupWindows 上是一个可执行程序 rustup-init.exe。

 现在执行 rustup-init 文件:

介绍

Rust 是一种系统编程语言,注重安全、并发和性能。它由 Mozilla Research 开发,并首次于 2010 年发布。

变量与可变性

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

数据类型

Rust 中的标量类型包括整型、浮点型、布尔型和字符类型。

rust
fn main() {
    let guess: u32 = "42".parse().expect("Not a number!");
    let x = 2.0; // f64
    let y: f32 = 3.0; // f32
    let t = true;
    let c = 'z';
}

函数

函数是 Rust 代码的基本单元。

rust
fn main() {
    another_function();
}

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

条件

条件表达式允许根据条件执行不同的代码。

rust
fn main() {
    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 {
        println!("number is not divisible by 3 or 4");
    }
}

循环

Rust 支持三种类型的循环:loopwhilefor

loop

rust
fn main() {
    let mut counter = 0;
    let result = loop {
        counter += 1;
        if counter == 10 {
            break counter * 2;
        }
    };
    println!("The result is {}", result);
}

while

rust
fn main() {
    let mut number = 3;
    while number != 0 {
        println!("{}!", number);
        number -= 1;
    }
    println!("LIFTOFF!!!");
}

for

rust
fn main() {
    let a = [10, 20, 30, 40, 50];
    for element in a.iter() {
        println!("The value is: {}", element);
    }
}

所有权

Rust 的所有权系统是其内存安全的关键。

rust
fn main() {
    let s1 = String::from("hello");
    let s2 = s1;
    // println!("{}", s1); // 这行代码将会出错,因为 s1 的所有权已经转移给了 s2
}

引用与借用

引用允许你在不取得所有权的情况下使用值。

rust
fn main() {
    let s1 = String::from("hello");
    let len = calculate_length(&s1);
    println!("The length of '{}' is {}.", s1, len);
}

fn calculate_length(s: &String) -> usize {
    s.len()
}

结构体

结构体用于将相关的数据组合在一起。

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

fn main() {
    let user1 = User {
        username: String::from("someusername123"),
        email: String::from("someone@example.com"),
        sign_in_count: 1,
        active: true,
    };
}

枚举

枚举允许你定义一个类型的所有可能值。

rust
enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32),
}

fn main() {
    let quit = Message::Quit;
    let move_message = Message::Move { x: 10, y: 20 };
}

错误处理

Rust 通过 ResultOption 枚举来处理错误。

rust
use std::fs::File;
use std::io::ErrorKind;

fn main() {
    let f = File::open("hello.txt");

    let f = match f {
        Ok(file) => file,
        Err(ref error) if error.kind() == ErrorKind::NotFound => {
            match File::create("hello.txt") {
                Ok(fc) => fc,
                Err(e) => panic!("Tried to create file but there was a problem: {:?}", e),
            }
        },
        Err(error) => {
            panic!("There was a problem opening the file: {:?}", error)
        },
    };
}

泛型

泛型允许你编写在多种类型上工作的代码。

rust
fn largest<T: PartialOrd>(list: &[T]) -> &T {
    let mut largest = &list[0];
    for item in list {
        if item > largest {
            largest = item;
        }
    }
    largest
}

fn main() {
    let number_list = vec![34, 50, 25, 100, 65];
    let result = largest(&number_list);
    println!("The largest number is {}", result);

    let char_list = vec!['y', 'm', 'a', 'q'];
    let result = largest(&char_list);
    println!("The largest char is {}", result);
}

Trait

Trait 类似于其他语言中的接口。

rust
pub trait Summary {
    fn summarize(&self) -> String;
}

pub struct Post {
    pub title: String,
    pub author: String,
    pub content: String,
}

impl Summary for Post {
    fn summarize(&self) -> String {
        format!("{}, by {} ({})", self.title, self.author, self.content)
    }
}

fn main() {
    let post = Post {
        title: String::from("Rust Programming"),
        author: String::from("Steve Klabnik"),
        content: String::from("Content of the post..."),
    };
    println!("New post: {}", post.summarize());
}

结论

Rust 是一种功能强大且灵活的编程语言,适用于各种类型的项目。通过学习 Rust 的基本语法和核心概念,你可以编写安全、高效的代码。

MIT License.