diff --git a/src/chapter_3/chapter_3_10_2.md b/src/chapter_3/chapter_3_10_2.md index 4a2dda9..1cc24d3 100644 --- a/src/chapter_3/chapter_3_10_2.md +++ b/src/chapter_3/chapter_3_10_2.md @@ -123,7 +123,9 @@ fn main() { - 返回值类型不为 Self; - 方法没有任何泛型类型参数。 -分析:***不允许返回Self,是因为trait对象在产生时,原来的具体的类型会被抹去,Self具体是什么类型不知道,所以编译会报错;不允许携带泛型参数,是因为Rust用带泛型的类型在编译时会做单态化,而trait对象是运行时才确定,即一个运行时才能确定的东西里又包含一个需要在编译时确定的东西,相互冲突,必然是不行的***。 +分析: + ***不允许返回Self,是因为trait对象在产生时,原来的具体的类型会被抹去,Self具体是什么类型不知道,所以编译会报错; + 不允许携带泛型参数,是因为Rust用带泛型的类型在编译时会做单态化,而trait对象是运行时才确定,即一个运行时才能确定的东西里又包含一个需要在编译时确定的东西,相互冲突,必然是不行的***。 如下代码编译会报错,因为Clone返回的是Self: ```Rust