Rust 基础入门 - 简介
为什么学 Rust
- 连续七年获评全世界最受欢迎的语言
- 没有 GC,无需手动内存管理
- 性能比肩 C/C++,但是安全性比 C/C++ 更高
- 全世界最好的包管理器 Cargo
但是,用的人是在是太少了,目前最多的评价就是 Rust 太难了,学了也没用 。 很好玩的是,这句话前面半句没人质疑,但是后面半句持保留意见,因为就找工作而言,Rust 确实没啥用,因为国内环境一般。但是我又不找工作,想成为一个更优秀的或者学点真东西,Rust 是个不错的选择。 至于前半句话,我就先学着吧,如果很久没更新了,就是我太菜了,学不会。
开干!配置环境
介绍这个没啥意思,想学 rust 的人,不会在配置环境上遇到啥问题,按照官网介绍来就行。
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
$ rustc -V
rustc 1.61.0 (fe5b13d68 2022-05-18)
VSCODE 插件:rust-analyze
包管理器 Cargo
再挑剔的开发者,都对 Cargo
赞不绝口
创建新项目
$ cargo new bull_shit
$ cd bull_shit
我就是不用 hello_world
!
项目结构如下所示:
$ tree
.
├── .git
├── .gitignore
├── Cargo.toml
└── src
└── main.rs
多贴心啊,连 git 和 gitignore 都给你写好了。
运行项目
有两种方式:
cargo run
- 手动编译后运行
第一种:
$ cargo run
Compiling bull_shit v0.1.0 (/Users/wjwei/code/learn-rust/bull_shit)
Finished dev [unoptimized + debuginfo] target(s) in 2.02s
Running `target/debug/bull_shit`
Hello, world!
第二种:
$ cargo build
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
$ ./target/debug/bull_shit
Hello, world!
cargo check
项目复杂之后,不需要每次都 run
或者 build
,可以使用 cargo check
,它只检查代码能否通过编译,省流。
$ cargo check
Checking bull_shit v0.1.0 (/Users/wjwei/code/learn-rust/bull_shit)
Finished dev [unoptimized + debuginfo] target(s) in 0.82s
Cargo.toml | Cargo.lock
这两个是 cargo 项目的核心文件
Cargo.toml
是cargo
特有的项目数据描述文件。它存储了项目的所有元配置信息,如果 Rust 开发者希望项目能够按照期望的方式进行构建、测试和运行,那么必须按照合理的方式构建Cargo.toml
Cargo.lock
是cargo
生成的锁文件,它记录了当前项目依赖的所有依赖包的确切版本号,以及这些依赖包的依赖关系。当项目依赖的依赖包有更新时,cargo
会自动更新Cargo.lock
文件,以确保项目依赖的依赖包的版本号一致。
作者就叫 Tom Preston-Werner,还有 Pradyun Gedam 是一个语义明显的、最小化配置文件格式
Cargo.toml
[package]
name = "bull_shit"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
package
是项目的基本信息,dependencies
是项目依赖的包。
package
中,name
定义项目名称,version
定义当前版本号,edition
定义了 Rust 大版本,详情见 Rust 版本详解。
dependencies
中,主要通过各种依赖段落来描述该项目的各种依赖项:
- 基于 Rust 官方仓库 crates.io,通过版本说明来描述
- 基于项目源代码的 git 仓库地址,通过 URL 来描述
- 基于本地项目的绝对路径或者相对路径,通过类 Unix 模式的路径来描述
如下述例子:
[dependencies]
rand = "0.3"
hammer = {version = "0.5.0"}
color = {git = "https://github.com/bjz/color-rs"}
geometry = {path = "crates/geometry"}
等项目进行下去,就会更加清晰。
从入门到放弃?
如何坚持下去?看看官方给的一些建议吧。
Rust 是一门全新的语言,它会带给你前所未有的体验,提升你的通用编程水平,甚至于赋予你全新的编程思想。在此时此刻,大家可能还半信半疑,但是当学完它再回头看时,可能你也会认同这些貌似浮夸的赞美。
避免试一试的心态
之前在学 python、R、shell 的时候,多爽啊,边做边学。但是 Rust 的学习曲线比较陡峭,从一开始就要认真对待。 人总要坚持一些事情的,给自己一个机会。
深入看一本好书
如果拿一些现成的 demo 上手做一个,要么放弃,要么重造,花费的时间和精力也就浪费了。
仔细阅读编译错误
强大的编译器是 rust 的一大特点,绝大多数情况下,编译器可以提示你如何解决问题。
不强制使用其他语言的最佳实践
Rust 不是一门专门的面对对象或函数式语言,需要遵循 Rust 应有的实践。
总结
开始认真学 Rust,给自己一个机会。