Rust编程入门

简介

Rust是一种由Mozilla开发的系统级编程语言,专注于速度、内存安全和并行处理。它通过所有权模型、借用检查器及生命周期概念,在编译时确保内存安全,有效避免了空指针异常、悬挂指针和数据竞争等问题。Rust支持高效的并发编程,并提供了高层次抽象而无运行时开销,保证程序性能。其自带的包管理和构建工具Cargo简化了依赖管理和构建流程。Rust适用于多种场景,包括操作系统、嵌入式系统、WebAssembly、游戏开发及高性能网络服务。凭借现代化的语法、强大的工具链支持(如rustfmt和clippy)以及跨平台兼容性,Rust在追求高效和安全的项目中展现出色。活跃的开源社区和丰富的学习资源进一步增强了它的吸引力,使其成为开发下一代可靠软件的理想选择。

创建Rust项目

  1. 安装Rust: 各种系统中Rust的安装,请参考Rust官网说明. 在ArchLinux环境下,安装命令为

    1
    sudo pacman -S rust

  2. 创建新项目

    1
    2
    cargo new hello_world
    cd hello_world

    运行cargo new hello_world后,会建立一个文件夹hello_world, 其内部包含:Cargo.lock,Cargo.toml,src,target.

  3. 编辑src/main.rs: 打开src/main.rs文件,并添加一些简单的Rust代码,比如打印斐波那契数列的前10项:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    fn fibonacci(n: u32) -> u32 {
    match n {
    0 => 0,
    1 => 1,
    _ => fibonacci(n - 1) + fibonacci(n - 2),
    }
    }

    fn main() {
    for i in 0..10 {
    println!("fibonacci({}) = {}", i, fibonacci(i));
    }
    }

  4. 编译并运行项目:

    1
    cargo run

    运行上述命令后,将输出斐波那契数列的前10项。

使用EVCXR进行交互式探索

为了能够更灵活地试验代码片段而不必每次都通过cargo run执行整个程序,我们可以使用evcxr,这是一个为Rust设计的Jupyter内核,也可以作为独立的REPL使用。

  1. 安装EVCXR:

    1
    cargo install evcxr

  2. 启动EVCXR

    1
    evcxr

  3. EVCXR中试验代码:一旦进入了evcxr环境,您可以直接输入Rust表达式或小段代码进行试验,例如尝试上面定义的斐波那契函数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // 定义斐波那契函数
    :dep num_traits

    fn fibonacci(n: u32) -> u32 {
    match n {
    0 => 0,
    1 => 1,
    _ => fibonacci(n - 1) + fibonacci(n - 2),
    }
    }

    // 测试斐波那契函数
    for i in 0..10 {
    println!("fibonacci({}) = {}", i, fibonacci(i));
    }

    请注意,在evcxr中,您可能需要先声明对外部依赖项(如果有的话)使用:dep命令。在这个特定的例子中,我们实际上不需要额外的依赖项,所以可以忽略:dep num_traits这一行。 通过这种方式,您可以在不离开终端的情况下快速测试Rust代码片段,这对于学习语言特性、调试问题或简单地验证想法都非常有用。此外,由于evcxr支持类似Jupyter notebook的交互方式,它也适合用于教学和演示目的。

Rust代码编译

  1. 确保处于正确的目录: 请确保您位于包含Cargo.toml文件的项目根目录下。这个文件定义了项目的配置、依赖和其他相关信息。在上述例子中,就是位于目录hello_world下.

  2. 编译项目:

    1
    cargo build

    这将根据当前环境(调试或发布)编译项目。默认情况下,cargo build会在调试模式下进行编译,生成的二进制文件会位于target/debug/目录下。

  3. 编译优化版本(发布模式):

    编译优化后的版本(适用于生产环境)
    1
    cargo build --release

    这将在target/release/目录下生成经过优化的二进制文件。相比调试模式,发布模式下的编译会花费更多时间,但是生成的二进制文件通常更小且执行速度更快。

  4. 直接运行可执行文件:

  • 对于调试模式编译的二进制文件,可以直接从target/debug/目录下运行:
    1
    ./target/debug/your_project_name
  • 对于发布模式编译的二进制文件,则从target/release/目录下运行:
    1
    ./target/release/your_project_name

    这里的your_project_name是指您Cargo项目的名称,也就是Cargo.toml文件中的[package] name字段所指定的名字。