[这是我参与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 代码行都以分号结尾。
安装:
1 | csharp复制代码rustup component add rustfmt |
格式化命令:
1 | bash复制代码cargo fmt |
运行此命令会格式化当前 crate 中所有的 Rust 代码。这应该只会改变代码风格,而不是代码语义。
Cargo
Cargo 是 Rust 的构建系统和包管理器,可以用于构建代码、下载并编译依赖库。
相关命令
1 | sql复制代码-- 查询版本 |
release会在target/release 而不是 target/debug 下生成可执行文件。这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。
创建项目
1 | go复制代码$ cargo new hello_ |
目录结构:
- .git:git 仓库
- src
- main.rs
- Cargo.toml: 使用 TOML (Tom’s Obvious, Minimal Language) 格式,这是 Cargo 的配置文件
Cargo.toml
文件的默认内容:
1 | ini复制代码[package] |
- package 表示下面的语句用来配置包;
- dependencies 罗列项目的依赖,当添加新依赖时需要添加到
[dependencies]
下。
编写并运行Rust 程序
项目会生成源文件名为 main.rs
。Rust 源文件总是以 .rs
扩展名结尾。如果文件名包含多个单词,使用下划线分隔它们。例如命名为 hello_world.rs,而不是 helloworld.rs。
1 | rust复制代码fn main() { |
main
函数是一个特殊的函数:在可执行的 Rust 程序中,它总是最先运行的代码。函数体被包裹在花括号{}
中。Rust 要求所有函数体都要用花括号包裹起来。- println! 调用了一个 Rust 宏。如果是调用函数,则应输入 println (无需! );
- 该行以分号结尾( ; ),这代表一个表达式的结束和下一个表达式的开始。
保存文件,并回到终端窗口。在 Linux 或 macOS 上,输入如下命令,编译并运行文件:
1 | shell复制代码$ rustc main.rs |
Rust Language Server (RLS)
RLS 提供了一个在后台运行的服务器,为 IDE、编辑器和其他工具提供有关 Rust 程序的信息。
安装
1 | sql复制代码-- 更新rustup |
为vscode安装vscode-rust检测RLS是否配置成功。
可以看到下图中已经存在语法提示
参考资料
本文转载自: 掘金