|
|
@ -269,7 +269,10 @@ fn main() {
|
|
|
|
<Type as Trait>::function(receiver_if_method, next_arg, ...);
|
|
|
|
<Type as Trait>::function(receiver_if_method, next_arg, ...);
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
对于关联函数,其没有一个方法接收器( `receiver` ),故只会有其他参数的列表。**可以选择在任何函数或方法调用处使用完全限定语法**,但是,很多时候我们可以省略,因为 Rust 能够从程序中的其他信息中推导出这部分。只有当存在多个同名实现时,Rust 需要帮助以便知道我们希望调用哪个实现时,才需要使用这个较为冗长的语法。
|
|
|
|
上面定义中,第一个参数是方法接收器`receiver`(三种`self`),只有方法才拥有,例如关联函数就没有`receiver`。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
完全限定语法可以用于任何函数或方法调用,那么我们为何很少用到这个语法?原因是Rust编译器能根据上下文自动推导出调用的路径,因此大多数时候,我们都无需使用完全限定语法。只有当存在多个同名函数或方法,且Rust无法区分出你想调用的目标函数时,该用法才能真正有用武之地。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 特征定义中的特征约束
|
|
|
|
## 特征定义中的特征约束
|
|
|
|