Struct “为什么?”;can';t泄漏专用型“;仅适用于结构而不适用于枚举?
在中,它们表明Struct “为什么?”;can';t泄漏专用型“;仅适用于结构而不适用于枚举?,struct,enums,rust,private-members,Struct,Enums,Rust,Private Members,在中,它们表明发布枚举不能保存私有结构: struct Node { elem: i32, next: List, } pub enum List { Empty, More(Box<Node>), } 这种差异的原因是什么?为什么私有枚举不会导致错误,而私有结构会导致错误?在第一个示例中,枚举列表是公共的。这意味着枚举变量More也是公共的。但是,More不能由外部代码使用,因为节点不是公共的。因此,您有一个外部可见但实际上无法使用的东西,这可能
发布枚举
不能保存私有结构
:
struct Node {
elem: i32,
next: List,
}
pub enum List {
Empty,
More(Box<Node>),
}
这种差异的原因是什么?为什么私有枚举不会导致错误,而私有结构会导致错误?在第一个示例中,枚举
列表是公共的。这意味着枚举变量More
也是公共的。但是,More
不能由外部代码使用,因为节点
不是公共的。因此,您有一个外部可见但实际上无法使用的东西,这可能不是您想要的
在第二个示例中,structList
是公共的。但是,head
字段不是公共字段。因此,Link
是否公开并不重要,因为外部代码首先看不到head
字段。澄清一下,您是说在rust中,公共代码不能访问外部私有代码,但私有代码可以访问外部私有代码?
pub struct List {
head: Link,
}
enum Link {
Empty,
More(Box<Node>),
}
struct Node {
elem: i32,
next: Link,
}