CS3210 共安排了六个 lab,第一个 lab 就是跟着 Rust By Example 学习 rust 的基础知识,然后通过 rustlings 检验学习成果,课程要求大约花费 30~40 小时完成 Rust By Example 的前 18 章,还是挺吃时间的。写这篇 part0 时我刚完成前三章的内容。
目前我对于 rust 的开发环境并不了解,为了防止因为版本不同造成错误,我通过课程提供的 rustup 脚本安装了开发环境,版本号 rustc 1.37.0-nightly (2019-06-30)
。
从目前学习的内容来看 rust 与 c 有很大的相似点,所以我准备以对比的方式记录 rust
学会了什么
- rustc 是 rust 的编译器,rust 语言扩展名为
.rs
,rust 的入口函数为fn main(){}
- rust 的注释语法和 c 相同,
//
是单行注释,/**/
是多行注释,不同的是 rust 的多行注释支持嵌套 - rust 的标准输入输出库为
std::fmt
(还不知道为什么用宏实现),格式化输出同样使用包含转义字符的字符串,但语法与 c 不同,功能也更强大,给出一个例子printf("%02.3f%d", a, b)
print!("{first:02.3f}{second}", second=b, first=a)
- 结构体默认和 c 相同无法直接输出,但是可以通过实现
fmt::Display
来实现类似toString
的功能,也可以通过derive
自动实现。 - rust 的数据类型也都是经典组合了,基础数据类型从i8、u8到i128、u128,还有f32、f64,四字节char,bool,isize,usize;组合数据类型数组元组切片枚举结构体一应俱全
- rust 的运算符和c一致,
+-*/%!|^&>><<
。 - rust 的枚举实现了 c 语言枚举和共用体两个特性,既可以枚举又可以存储变量,类似 switch 的
match
语句也让枚举处理更加优美,也让枚举变成了一个非常强大的工具。 - typedef 现在 rust 中以关键字
type
呈现,但我还没仔细分析有没有什么差异。 - rust 中的变量声明时,默认为可以接受非静态值的不可变变量,
mut
关键字使变量可变,const
关键字使变量仅能接受静态值,这与 c 的处理方式完全不同。