[这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战]
Rust如何让程序员更优秀
Rust 程序设计语言的本质在于 赋能
(empowerment),通过严苛的约束提高编码能力。Rust语言可以使你无后顾之忧的走入“系统层面
”(“systems-level”)的工作,接触内存管理
、数据表示
和并发
等底层细节。在 Rust 中,编译器充当了守门员的角色,它拒绝编译存在这些难以捕获的 bug 的代码,这其中包括并发 bug。通过与编译器合作,团队将更多的时间聚焦在程序逻辑
上,而不是追踪 bug。
而为了方便使用,Rust提供了一些相关工具帮助开发者编写代码。如下所示:
Rustfmt
可以确保开发者遵循一致的代码风格。Cargo
是内置的依赖管理器和构建工具,可以增加、编译和管理依赖,并使依赖在 Rust 生态中拥有相同的文件结构。Rust Language Server
为集成开发环境(IDE)提供了强大的代码补全和内联错误信息功能。
Rustfmt
rustfmt
是自动格式化工具,它会根据社区代码风格格式化代码,很多项目使用 rustfmt
来避免编写 Rust 风格的争论。
如果想在 Rust 项目中坚持标准风格,也需要使用rustfmt
以特定的风格格式化你的代码。常见的几个格式约束如下所示
- Rust 风格是缩进四个空格,而不是一个制表符;
println!
调用一个 Rust 宏。如果它改为调用函数,则输入为println(不带!)- 大多数 Rust 代码行都以分号结尾。
安装:
rustup component add rustfmt
格式化命令:
cargo fmt
运行此命令会格式化当前 crate 中所有的 Rust 代码。这应该只会改变代码风格,而不是代码语义。
Cargo
Cargo 是 Rust 的构建系统和包管理器,可以用于构建代码、下载并编译依赖库。
相关命令
-- 查询版本
$ cargo --version
cargo 1.52.0 (69767412a 2021-04-21)
-- 构建
cargo build
--运行
cargo run
-- 快速检查代码,但并不产生可执行文件\
cargo check
-- 发布(release)构建
cargo build --release
release会在target/release 而不是 target/debug 下生成可执行文件。这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。
创建项目
$ cargo new hello_
Created binary (application) `hello_` package
目录结构:
- .git:git 仓库
- src
- main.rs
- Cargo.toml: 使用 TOML (Tom's Obvious, Minimal Language) 格式,这是 Cargo 的配置文件
Cargo.toml
文件的默认内容:
[package]
name = "hello_"
version = "0.1.0"
authors = ["name <email>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
- package 表示下面的语句用来配置包;
- dependencies 罗列项目的依赖,当添加新依赖时需要添加到
[dependencies]
下。
编写并运行Rust 程序
项目会生成源文件名为 main.rs
。Rust 源文件总是以 .rs
扩展名结尾。如果文件名包含多个单词,使用下划线分隔它们。例如命名为 hello_world.rs,而不是 helloworld.rs。
fn main() {
println!("Hello, world!");
}
main
函数是一个特殊的函数:在可执行的 Rust 程序中,它总是最先运行的代码。函数体被包裹在花括号{}
中。Rust 要求所有函数体都要用花括号包裹起来。- println! 调用了一个 Rust 宏。如果是调用函数,则应输入 println (无需! );
- 该行以分号结尾( ; ),这代表一个表达式的结束和下一个表达式的开始。
保存文件,并回到终端窗口。在 Linux 或 macOS 上,输入如下命令,编译并运行文件:
$ rustc main.rs
$ ./main
Hello, world!
window:
> .\main.exe
Rust Language Server (RLS)
RLS 提供了一个在后台运行的服务器,为 IDE、编辑器和其他工具提供有关 Rust 程序的信息。
安装
-- 更新rustup
rustup update
rustup component add rls rust-analysis rust-src
为vscode安装vscode-rust检测RLS是否配置成功。
可以看到下图中已经存在语法提示