目录
错误处理
错误概述
应对panic
使用panic!产生回溯信息
Result 枚举
处理result–match表达式
unwrap:match表达式的快捷方法,错误信息不能自定义
expect 错误信息可以自定义
let f=File::open(“hello”).expect(“无法打开”);
Result枚举与可恢复的错误
传播错误
?运算符
实现与上一个代码相同的功能
如果result是ok:ok中的值就是表达式的结果,然后继续执行程序
如果Result是Err:Err就是整个函数的返回值,就像使用了return
?与from函数
?链式调用
?运算符只能用于返回类型为Result的函数
什么时候使用panic
指导性建议
创建类型时验证
泛型
结构体中的泛型
enum中的泛型
方法定义中的泛型
方法中的泛型参数可以和结构体不同
trait
定义一个trait
impl Tweet: 为类型实现方法
impl 名字 for tweet:为类型实现trait
调用trait
实现trait的约束
默认实现
trait中可以调用未实现的该trait的方法
trait作为函数参数
trait impl
trait bound
使用+指定多个trait
where子句简化函数声明
实现trait作为返回类型
使用trait bound的例子
需要copy的trait 但是之前没添加这个约束(基本类型是copy,String类型是clone)
也需要用于比较大小的约束
使用trait bound有条件的实现方法
生命周期
避免悬垂引用
因为x在花括号结束时内存就释放了
被借用的生命周期要更长
例子
生命周期标注语法
语法
例子
函数签名中的生命周期
深入理解生命周期
struct中定义的生命周期标注
生命周期的省略
输入输出生命周期
生命周期省略的三个规则
最后报错