请考虑以下代码
struct Node {
elem: i32,
next: List,
}
pub enum List {
Empty,
More(Box<Node>),
}
Run Code Online (Sandbox Code Playgroud)
这会导致编译器抱怨:
error[E0446]: private type `Node` in public interface
--> src/main.rs:8:10
|
8 | More(Box<Node>),
| ^^^^^^^^^^ can't leak private type
Run Code Online (Sandbox Code Playgroud)
但是这段代码即使Link是私有的也不会导致错误:
pub struct List {
head: Link,
}
enum Link {
Empty,
More(Box<Node>),
}
struct Node {
elem: i32,
next: Link,
}
Run Code Online (Sandbox Code Playgroud)
造成这种差异的原因是什么?私有结构为什么私有枚举不会导致错误?
rust ×1