8 个版本 (1 个稳定版)
1.0.0 | 2019 年 12 月 8 日 |
---|---|
0.6.0 | 2019 年 8 月 22 日 |
0.5.0 | 2019 年 8 月 4 日 |
0.4.0 | 2019 年 7 月 29 日 |
0.1.1 | 2019 年 7 月 7 日 |
#1257 在 数据结构 中
用于 r1
7KB
R/O
项目
- 仓库: https://bitbucket.org/haibison/ro
- 许可证:Nice License 1.0.0 (请参阅
master
分支根目录下的 LICENSE 文件) - 本项目遵循 语义版本控制 2.0.0
特性
此包可以帮助实现只读功能。
不便利的构建器模式
带有构建器模式的示例
-
您使用所有字段私有来创建新的结构体。
-
对于每个字段,您可能想要添加 2 个函数
set_x(&mut self, ...)
:更改字段值。get_x(&self, ...)
:访问字段值。
如果您的结构体有多个私有字段,那么这会工作得很好。但是,当您添加更多字段时,这将会变得不方便:对于每个字段,都有可能需要添加 2 个更多函数。公共 API 越多,您需要维护的就越多。
ReadOnly
此结构体可以帮助缩短您的代码
- 您可以使您的结构体中的任何字段公共。
- 然后您可以实现
Default
。这可以帮助您的用户了解您认为应该有的良好默认值。如果需要,他们可以调整这些值。 - 您的代码可以自由地接受您自己的结构体,并将其转换为只读版本。然后您可以将该版本包装在
Arc
中,并在线程之间共享,而不用担心Arc::get_mut()
。 - 即使您的结构体中有一些可变函数,只读版本仍然可以很好地完成其工作:可变函数是不可访问的。
注意
作者认为,这个crate应该用于二进制程序,而不是库crate。本身极简单的ReadOnly
要编码。所以如果你尝试不将这个crate作为依赖项包含在自己的库中,这将非常有助于你的用户。
但,这是你的选择。