Skip to main content

Gatech CS3210 学习笔记 - lab0 part0

· 3 min read

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 的处理方式完全不同。