为什么要学习rust

这段懒得写,以后补上

关于rust

Rust是由Mozilla主导开发的通用、编译型编程语言。设计准则为“安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的编程风格。

性能

在性能上,具有额外安全保证的代码会比C++慢一些。

语法

Rust的语法设计,与C语言和C++相当相似,区块(block)使用大括号隔开,控制流程的关键字如if、else、while等等。在保持相似性的同时,Rust也加进了新的关键字,如用于模式匹配的match(与switch相似)则是使用C/C++系统编程语言的人会相对陌生的概念。尽管在语法上相似,Rust的语义(semantic)和C/C++非常不同。

内存安全

为了提供内存安全,它的设计不允许空指针和悬空指针。指针只能透过固定的初始化形态来建构,而所有这些形态都要求它们的输入已经分析过了。Rust有一个检查指针生命期间和指针冻结的系统,可以用来预防在C++中许多的类型错误,甚至是用了智能指针功能之后会发生的类型错误。

rust在Archlinux上的配置

在rust-archlinux中文维基中描述:安装 Rust 主要有两种方式:直接安装。如果你只使用 Rust 来运行或安装软件,推荐使用此方式。Rustup 安装。如果你打算进行 Rust 编程,推荐使用此方式。

使用rustup安装

安装rustup

打开终端,输入以下命令来安装rustup:

sudo pacman -S rustup

初始化rust环境

安装完成后,运行以下命令来安装 Rust 并设置默认工具链(通常是最新稳定版)

rustup install stable

设置环境变量

rustup 会自动将 Rust 的二进制文件(如 cargorustc)添加到你的 PATH 中。在安装过程中,你可能会看到提示,确认它已经配置完成。可以通过以下命令检查 Rust 是否安装成功。

rustc --version

会看到类似如下的输出:

rustc 1.82.0 (f6e511eec 2024-10-15)

验证安装

使用如下命令验证rust是否正确安装:

rustc --version
cargo --version

如果成功,会看到类似如下输出:

❯ rustc --version
rustc 1.82.0 (f6e511eec 2024-10-15)
❯ cargo --version
cargo 1.82.0 (8f40fc59f 2024-08-21)

Hello world!

创建一个新的rust项目

首先,使用 cargo(Rust 的构建工具和包管理器)创建一个新的项目。打开终端并执行以下命令:

cargo new hello_world

这项操作将创建一个名为hello_world的新项目目录,目录结构如下:

 hello_world
├──  Cargo.toml
└── 󱧼 src
    └──  main.rs

编写hello world程序

cargo new 已经在其中的main.rs中生成了一个简单的示例代码,内容如下:

fn main() {
    println!("Hello, world!");
}     

如果没有,可以手动在src/main.rs文件中输入上面的代码。

编译并运行程序

在终端中切换目录并且使用cargo run命令编译并运行程序:

cd hello_world
cargo run

终端中的输出如下:

❯ cargo run
   Compiling hello_world v0.1.0 (/home/dongfeng/Project/rust/hello_world)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.21s
     Running `target/debug/hello_world`
Hello, world!

其他常用命令

如果只想编译,但不想运行,可以使用cargo build:

❯ cargo build
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s

编译完成后的可执行目录在项目目录下的target/debug目录中,目录结构如下:

hello_world/
├── Cargo.toml
├── src/
│   └── main.rs
└── target/
    └── debug/
        └── hello_world  # 这是编译后的可执行文件

如果希望编译优化过的发布版本如release,可以使用--release标识

cargo build --release

此时项目目录类似如下结构:

hello_world/
└── target/
    └── release/
        └── hello_world  # 这是优化后的发布版本

如果想清除生成的编译文件,可以使用cargo clean:

❯ cargo clean

     Removed 21 files, 7.4MiB total