1、描述
在某些情况下,库作者可能想在不破坏向后兼容的情况下,为公共结构体添加公共字段或为公共枚举添加新的变体。在Rust中可以使用#[non_exhaustive] 和添加私有字段的方式来达成。
2、示例:
在当前的crate student中,有如下公共结构体:
但是我们未来会为StudentInfo添加公共字段。
使用non_exhaustive
示例代码:
在同一crate中使用该结构体和没加non_exhaustive一样,但是在外部crate使用该结构体时,如下:
因此此时创建StudentInfo需要提供创建函数进行。但是可以如下使用:
添加一个私有字段
除了上面的方式,还有一种就是添加私有字段,不允许外部crate直接创建,示例如下:
领取专属 10元无门槛券
私享最新 技术干货