Merge pull request #937 from crjg-k/patch-11

Update ch15-01-box.md
main
KaiserY 2 days ago committed by GitHub
commit b75d84bfcb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -33,7 +33,7 @@
### Box 允许创建递归类型
**递归类型**_recursive type_的值可以拥有另一个同类型的值作为其自身的一部分。但是这会产生一个问题因为 Rust 需要在编译时知道类型占用多少空间。递归类型的值嵌套理论上可以无限地进行下去,所以 Rust 不知道递归类型需要多少空间。因为 box 有一个已知的大小,所以通过在循环类型定义中插入 box就可以创建递归类型了。
**递归类型**_recursive type_的值可以拥有另一个同类型的值作为其自身的一部分。但是这会产生一个问题因为 Rust 需要在编译时知道类型占用多少空间。递归类型的值嵌套理论上可以无限地进行下去,所以 Rust 不知道递归类型需要多少空间。因为 box 有一个已知的大小,所以通过在递归类型定义中插入 box就可以创建递归类型了。
作为一个递归类型的例子,让我们探索一下 _cons list_。这是一个函数式编程语言中常见的数据类型,来展示这个(递归类型)概念。除了递归之外,我们将要定义的 cons list 类型相当简单,所以这个例子中的概念,在任何遇到更为复杂的涉及到递归类型的场景时都很实用。

Loading…
Cancel
Save