From 42412a32f86ed67ebea58e6566f685bd913250af Mon Sep 17 00:00:00 2001 From: lijinpeng Date: Mon, 3 Jan 2022 15:55:12 +0800 Subject: [PATCH] Modify content in advance-trait.md --- course-book/contents/basic/trait/advance-trait.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/course-book/contents/basic/trait/advance-trait.md b/course-book/contents/basic/trait/advance-trait.md index 76c4a305..2ab6d9e5 100644 --- a/course-book/contents/basic/trait/advance-trait.md +++ b/course-book/contents/basic/trait/advance-trait.md @@ -52,7 +52,8 @@ trait Container { fn contains(&self,a: A,b: B) -> bool; } -fn difference(container: &C) -> i32 where +fn difference(container: &C) -> i32 + where C : Container {...} ``` @@ -77,7 +78,7 @@ trait Add { fn add(self, rhs: RHS) -> Self::Output; } ``` -它有一个泛型参数`RHS`,但是与我们以往的用法不同,这里它给`RHS`一个默认值,也就是当用户不指定`RHS`时,默认使用两个同样类型的值进行相加,然后返回一个关联类型`Outpu`。 +它有一个泛型参数`RHS`,但是与我们以往的用法不同,这里它给`RHS`一个默认值,也就是当用户不指定`RHS`时,默认使用两个同样类型的值进行相加,然后返回一个关联类型`Output`。 可能上面那段不太好理解,下面我们用代码来举例: ```rust @@ -196,12 +197,9 @@ fn main() { 运行后依次输出: ```console -fn main() { - let person = Human; - Pilot::fly(&person); - Wizard::fly(&person); - person.fly(); -} +This is your captain speaking. +Up! +*waving arms furiously* ``` 因为`fly`方法的参数是`self`,当显示的调用时,编译器就可以根据调用的类型(`self`的类型)决定具体调用哪个方法。