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,编译时无法确定的值不能赋值