方法和关联函数
- 它们都是定义在impl实现块中的函数。
- 方法,指第一个参数是self
或其变体的函数,它由类型实例调用。 - 关联函数,指实现块中定义的非方法的函数。调用时需要指定类型作用域。通常用于定义构造器函数,即返回值类型为实现类型的函数。
方法和关联函数
或其变体的函数,它由类型实例调用。ps 命令
列出当前运行的shell进程
显示整个数组变量
*号引用一个单独的数组元素
unset 命令
删除环境变量
export 命令
把局部环境变量导出为全局环境变量。
局部变量
不需要声明,直接引入。
echo 显示变量的值
变量前需要加上$符号
env 命令
显示所有环境变量
使用特征作为函数返回值
impl TraitBox<dyn Trait>返回值是不同的类型,你可能更需要特征对象
Box<dyn TraitName>Box包裹。只有在返回值是同一个类型
这里指从多个分支返回值时,必须是同一类型。
impl Trait
impl Trait 作为标注类型,表示任意一个实现了该trait的类型。&impl Trait🌟🌟🌟
#[derive(Debug, PartialEq, PartialOrd)],使相等断言宏可以运行。运算符仅仅是特征方法调用的语法糖
type Output = FooBar;ops::Mul<Output=T>使用 #[derive] 属性来派生一些特征
#[derive(PartialEq, PartialOrd)] 使类型可以被比较大小#[derive(Debug)] 使类型可以被打印Trait
Self ,指代实现者的类型。具体类型在实现trait时,需要使用实现类型替换Self类型。const 泛型参数只能使用以下形式的实参
map & and_then
用于进一步处理Result值。
它们都对Ok内部值应用一个闭包,对Err值保留。
区别在于,对于闭包返回值: * map,会自动将其包装为Result::Ok类型; * and_then,不会。
code: * result.and_then(|value| value + 2),结果为内部值的类型。 * result.map(|value| value + 2),结果为Result类型。
? 跟 unwrap
对于一个Result实例,使用 ? 和 unwrap 都能展开它的值。 区别在于,当遇到错误实例时, ?会将错误返回。 unwrap 会调用panic。
此外,?其实是返回错误的简写形式。
? 可以链式调用。
栈展开或终止
处理终止流程的两种方式