小编use*_*830的帖子

在递归数据结构中使用常规引用而不是“Box”

我是 Rust 的新手。当我阅读The Rust Programming Language 的第 15 章时,我不明白为什么应该Box在递归数据结构中使用es 而不是常规引用。这本书的 15.1 解释了需要间接来避免无限大小的结构,但没有解释为什么要使用Box.

#[derive(Debug)]
enum FunctionalList<'a> {
    Cons(u32, &'a FunctionalList<'a>),
    Nil,
}

use FunctionalList::{Cons, Nil};

fn main() {
    let list = Cons(1, &Cons(2, &Cons(3, &Nil)));

    println!("{:?}", list);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码编译并生成所需的输出。似乎使用FunctionalList在堆栈上存储少量数据效果很好。这段代码会引起麻烦吗?

rust

5
推荐指数
1
解决办法
111
查看次数

标签 统计

rust ×1