IT技术之家

首页 > 编程

编程

Rust-错误处理、泛型trait和生命周期_rust 泛型错误_牛福儿

发布时间:2023-11-28 22:44:53 编程 33次 标签:rust
这里写目录标题错误处理错误概述应对panic使用panic!产生回溯信息Result 枚举处理result--match表达式unwrap:match表达式的快捷方法,错误信息不能自定义expect 错误信息可以自定义Result枚举与可恢复的错误传播错误?运算符?与from函数?链式调用?运算符只能用于返回类型为Result的函数什么时候使用panic指导性建议创建类型时验证泛型结构体中的泛型enum中的泛型方法定义中的泛型方法中的泛型参数可以和结构体不同trait定义一个trait调用trait实现t...

目录

错误处理错误概述应对panic使用panic!产生回溯信息Result 枚举处理result--match表达式unwrap:match表达式的快捷方法,错误信息不能自定义expect 错误信息可以自定义 Result枚举与可恢复的错误传播错误?运算符?与from函数?链式调用?运算符只能用于返回类型为Result的函数 什么时候使用panic指导性建议创建类型时验证 泛型结构体中的泛型enum中的泛型方法定义中的泛型方法中的泛型参数可以和结构体不同 trait定义一个trait调用trait 实现trait的约束默认实现trait作为函数参数使用+指定多个traitwhere子句简化函数声明实现trait作为返回类型使用trait bound的例子使用trait bound有条件的实现方法 生命周期避免悬垂引用例子生命周期标注语法语法例子 函数签名中的生命周期深入理解生命周期struct中定义的生命周期标注生命周期的省略输入输出生命周期生命周期省略的三个规则方法定义中的生命周期标注静态生命周期

错误处理

错误概述

应对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中定义的生命周期标注

生命周期的省略

输入输出生命周期

生命周期省略的三个规则


最后报错

方法定义中的生命周期标注

静态生命周期

参考视频