From 6b5ab2183b7734816512f188d4f7ad957633e8ca Mon Sep 17 00:00:00 2001 From: sunface Date: Tue, 18 Jan 2022 13:09:18 +0800 Subject: [PATCH] upadte advance-trait.md --- book/contents/basic/trait/advance-trait.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/book/contents/basic/trait/advance-trait.md b/book/contents/basic/trait/advance-trait.md index 758a2df7..41a1aa1b 100644 --- a/book/contents/basic/trait/advance-trait.md +++ b/book/contents/basic/trait/advance-trait.md @@ -269,7 +269,10 @@ fn main() { ::function(receiver_if_method, next_arg, ...); ``` -对于关联函数,其没有一个方法接收器( `receiver` ),故只会有其他参数的列表。**可以选择在任何函数或方法调用处使用完全限定语法**,但是,很多时候我们可以省略,因为 Rust 能够从程序中的其他信息中推导出这部分。只有当存在多个同名实现时,Rust 需要帮助以便知道我们希望调用哪个实现时,才需要使用这个较为冗长的语法。 +上面定义中,第一个参数是方法接收器`receiver`(三种`self`),只有方法才拥有,例如关联函数就没有`receiver`。 + +完全限定语法可以用于任何函数或方法调用,那么我们为何很少用到这个语法?原因是Rust编译器能根据上下文自动推导出调用的路径,因此大多数时候,我们都无需使用完全限定语法。只有当存在多个同名函数或方法,且Rust无法区分出你想调用的目标函数时,该用法才能真正有用武之地。 + ## 特征定义中的特征约束