#只读 #semver #仓库

无 std ro

帮助实现只读功能

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

项目

特性

此包可以帮助实现只读功能。

不便利的构建器模式

带有构建器模式的示例

  • 您使用所有字段私有来创建新的结构体。

  • 对于每个字段,您可能想要添加 2 个函数

    • set_x(&mut self, ...):更改字段值。
    • get_x(&self, ...):访问字段值。

如果您的结构体有多个私有字段,那么这会工作得很好。但是,当您添加更多字段时,这将会变得不方便:对于每个字段,都有可能需要添加 2 个更多函数。公共 API 越多,您需要维护的就越多。

ReadOnly

此结构体可以帮助缩短您的代码

  • 您可以使您的结构体中的任何字段公共。
  • 然后您可以实现 Default。这可以帮助您的用户了解您认为应该有的良好默认值。如果需要,他们可以调整这些值。
  • 您的代码可以自由地接受您自己的结构体,并将其转换为只读版本。然后您可以将该版本包装在 Arc 中,并在线程之间共享,而不用担心 Arc::get_mut()
  • 即使您的结构体中有一些可变函数,只读版本仍然可以很好地完成其工作:可变函数是不可访问的。

注意

作者认为,这个crate应该用于二进制程序,而不是库crate。本身极简单ReadOnly要编码。所以如果你尝试将这个crate作为依赖项包含在自己的库中,这将非常有助于你的用户。

但,这是你的选择。

没有运行时依赖