diff --git a/book/contents/advance/custom-type.md b/book/contents/advance/custom-type.md index c6ad4963..fff793fd 100644 --- a/book/contents/advance/custom-type.md +++ b/book/contents/advance/custom-type.md @@ -206,7 +206,7 @@ fn main() { 上述的这些集合虽然底层数据可动态变化,感觉像是动态大小的类型。但是实际上,这些底层数据只是保存在堆上,在栈中还存有一个引用类型,该引用包含了集合的内存地址、元素数目、分配空间信息,通过这些信息,编译器对于该集合的实际大小了若指掌,因此它们依然是固定大小的类型。 -现在给你一个挑战:想出一个动态类型。俺厚黑地说一句,估计大部分人都想不出这样的一个类型,就连我,如果不是查询着资料再写,估计也一时半会儿想不到一个。 +现在给你一个挑战:想出一个动态类型。俺厚黑地说一句,估计大部分人都想不出这样的一个类型,就连我,如果不是查询着资料在写,估计也一时半会儿想不到一个。 考虑一下这个类型:`str`,感觉有点眼生?是的,它既不是 `String` 动态字符串,也不是 `&str` 字符串切片,而是一个 `str`。它是一个动态类型,同时还是 `String` 和 `&str` 的底层数据类型。 由于 `str` 是动态类型,因此它的大小直到运行期才知道,下面的代码会因此报错: ```rust