为什么要学习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 的二进制文件(如 cargo
、rustc
)添加到你的 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