Rust从入门到精通
我这个人不喜欢废话,本文基本都是干货(其实一开始是写给自己看的Cheat Sheet性质的笔记没想到越写越长),没必要展开的地方就不展开讲了,读者可自行参考The Rust Book和Rust Reference。基本上Part I就是搬运的The Rust Book,补上了若干细节,Part II是一些相对更「高级」的特性,可对照Rust Reference食用,Part III是全文的精髓,里面对Rust核心的ownership、borrow和lifetime机制的讨论,目前中文资料里还没有如此深入的(好像英文也没有,大家都是复读机,只会复读最基本的知识)。
Part I. Common Rust
Basics
首先看一下基本语法,在传统的C-like基础上引入了大量ML-Style语法:
- 注释:
// this is a line comment
,/* this is a block comment */
/// inner line doc
,/** inner block doc */
: 这种注释用于为紧跟着的对象提供文档//! outer line doc
,/*! inner block doc */
: 这种注释用于为父对象提供文档- 文档注释支持Markdown语法
- ML风格变量声明
let lhs = rhs;
: Statement以分号结尾let x: u32;
: 默认使用类型推导let mut y = 42;
: 默认immutable,加mut
表示mutablelet x = 3; let x = x * 2;
: 支持Variable Shadowinglet
声明不是Expression,不能作为RHS
- 单独的
const
声明,不允许声明为mutableconst MAX: u32 = 100;
: 必须提供类型annotationconst
允许在Global Scope声明,而let
不允许const
只允许赋值Constant Expression,编译时无法确定的值不能赋值