【发布时间】:2018-03-22 15:32:14
【问题描述】:
在Learning Rust With Entirely Too Many Linked Lists 中,他们表明pub enum 不能拥有私人struct:,
struct Node {
elem: i32,
next: List,
}
pub enum List {
Empty,
More(Box<Node>),
}
这会导致编译器报错:
error[E0446]: private type `Node` in public interface
--> src/main.rs:8:10
|
8 | More(Box<Node>),
| ^^^^^^^^^^ can't leak private type
但是即使Link 是私有的,这段代码也不会导致错误:
pub struct List {
head: Link,
}
enum Link {
Empty,
More(Box<Node>),
}
struct Node {
elem: i32,
next: Link,
}
造成这种差异的原因是什么?为什么私有枚举不会导致错误,而私有结构会导致错误?
【问题讨论】:
标签: struct enums rust private-members