From 0ba50d82c8abe77a41eb5384868bf23ea361fdce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=A4=E7=8B=90=E4=B8=80=E5=86=B2?= <43949039+anonymousGiga@users.noreply.github.com> Date: Thu, 18 May 2023 08:57:08 +0800 Subject: [PATCH] Update chapter_3_10_2.md --- src/chapter_3/chapter_3_10_2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chapter_3/chapter_3_10_2.md b/src/chapter_3/chapter_3_10_2.md index b20d396..4a2dda9 100644 --- a/src/chapter_3/chapter_3_10_2.md +++ b/src/chapter_3/chapter_3_10_2.md @@ -123,7 +123,7 @@ fn main() { - 返回值类型不为 Self; - 方法没有任何泛型类型参数。 -分析:不允许返回Self,是因为trait对象在产生时,原来的具体的类型会被抹去,Self具体是什么类型不知道,所以编译会报错;不允许携带泛型参数,是因为Rust用带泛型的类型在编译时会做单态化,而trait对象是运行时才确定,即一个运行时才能确定的东西里又包含一个需要在编译时确定的东西,相互冲突,必然是不行的*。 +分析:***不允许返回Self,是因为trait对象在产生时,原来的具体的类型会被抹去,Self具体是什么类型不知道,所以编译会报错;不允许携带泛型参数,是因为Rust用带泛型的类型在编译时会做单态化,而trait对象是运行时才确定,即一个运行时才能确定的东西里又包含一个需要在编译时确定的东西,相互冲突,必然是不行的***。 如下代码编译会报错,因为Clone返回的是Self: ```Rust