【发布时间】:2018-11-12 16:17:40
【问题描述】:
我注意到 Rust 的 Vec::len 方法只是访问向量的 len 属性。为什么len 不只是一个公共属性,而不是围绕它包装一个方法?
我认为这是为了万一将来实现发生变化,什么都不会破坏,因为Vec::len 可以在Vec 的任何用户不知道的情况下改变它获取长度的方式,但我不知道是否存在是否还有其他原因。
我的问题的第二部分是关于我何时设计 API。如果我正在构建自己的 API,并且我有一个带有 len 属性的结构,我应该将 len 设为私有并创建一个公共 len() 方法吗?在 Rust 中公开字段是不好的做法吗?我不这么认为,但我没有注意到在 Rust 中经常这样做。例如,我有以下结构:
pub struct Segment {
pub dol_offset: u64,
pub len: usize,
pub loading_address: u64,
pub seg_type: SegmentType,
pub seg_num: u64,
}
这些字段中的任何一个是否应该是私有的,而是具有像 Vec 这样的包装函数?如果是这样,那为什么?在 Rust 中是否有一个很好的指导方针可以遵循?
【问题讨论】:
标签: methods rust visibility naming