day1 第二次入门rust
基础类型
创建变量的关键字:let
创建的变量默认是不可变化的,加上mut关键字才能改变
函数
宏macro
宏与函数类似,只是它不只是运行代码,而是扩展更多代码
宏使用 !去激活
if语句的条件不需要()
直接 if a>1 { }
循环语句:
loop是无限循环的,while是条件循环
隐式返回
- Rust 中,函数体最后一个表达式的结果会自动作为返回值,无需 return 关键字。
- 若添加分号(a - b;),会变成语句而非表达式,导致编译错误
match
每种情况都要考虑,且结尾用的是逗号,因为是表达式
enum枚举
struct结构体
创建struct时,我们要表示出结构体中的每个属性
tuples元组
存一行记录
rust是一种基于表达式的语言
Ownership 所有权
rust使用 ownership来管理内存,防止内存泄漏
- 一个函数创建一个变量,就拥有了这个变量的所有权
- 调用函数的默认行为就是将内存移向新的所有者
所有权的体现,进入第一个display_light函数后就被销毁了
于是在进入第二个display_light函数,light就已经为空了
借用、引用&
改进版本:修改为借用
&代表我们去借用这个数据,意味着我们就不能去用完删除了,用完就还回去
impl实现
把和这个struct相关的函数放在一个impl当中
区分 :: 和 .
Vector动态数组
存相同类型的东西,可以添加push,删除pop,遍历for in
String and &str
- String:owned 在结构中使用字符串时,要使用String
- &str: borrowed String slice 调用函数,传参时使用&str
String是自动被借用的,使用.to_owned() 或者 String::from() 去获取一个owned copy of string slice
e
Option
Result
HashMap