#data #optics #data-access #framework #lens #raw-pointers #library

no-std smart_access

一个极简的“懒双向指针”框架

18个版本 (6个重大更改)

0.7.0 2020年7月13日
0.6.2 2020年7月10日
0.5.4 2020年7月5日
0.5.2 2020年6月30日
0.1.2 2020年6月18日

#708 in 数据结构

每月41次下载

MIT许可协议

95KB
1K SLoC

Rust的智能访问器

crate docs

概述

有许多种“智能指针”。它们有以下共同点

  • 一个简单的数据访问协议(做一些记录,然后给出数据的原始指针等价物)
  • 一些非平凡的内存管理逻辑

这个crate提供了“智能访问器”

  • 它们不关心所有权问题
  • 它们提供了数据的双向视图:更新访问的数据可能会导致与被访问数据相关联的其他数据的非平凡变化
  • 访问视图可以完全是虚拟的:它只能为访问期间构建

有关代码示例,请参阅文档

使用方法

只需在您的Cargo.toml中包含

smart_access = "0.7"

变体

虽然库非常小,但包括一些可插拔组件。

对于基础版本,使用

smart_access = { version = "0.7", default-features = false }

但通常您会想要更方便的东西。

Vec、HashMap和BTreeMap的访问器

smart_access = { version = "0.7", default-features = false, features = ["collections", "hashbrown"] }

一个最大化的no_std和no-alloc版本

smart_access = { version = "0.7", default-features = false, features = ["batch_ct", "detach", "traversal"] }

版本

  • 0.7.0:现在完全独立于std
  • 0.6.2:Vec拥有的切片的访问器 + 一些文档改进。
  • 0.6.1:修复了在太大范围内引发恐慌的迭代器访问器。
  • 0.6.0:迭代器访问器 + Cps trait上的get_clone方法。
  • 0.5.4:stdlib集合的访问器 + 文档改进。
  • 0.5.3:新的映射访问器类型(包装 and_modify(..).or_insert(..))。
  • 0.5.2:添加了一个用于形成路径类型的大宏。
  • 0.5.1:修复了一些文档中的错误。现在,分离路径的具体类型现在是公开的。
  • 0.5.0:修改了 AT 结构的表示。重写了 detach 功能。现在文档包含了版本迁移指南。
  • 0.4.1:修复了在启用 detach 的版本中的一些严重错误。
  • 0.4.0:公共API,用于将访问批作为函数输入/输出使用。
  • 0.3.0:公共API,用于将分离访问器作为函数输入/输出使用。
  • 0.2.2:新功能 detach 允许用户从访问数据源中分离访问器。
  • 0.2.1:现在在 no_std 上真正工作。
  • 0.2.0:简单的批量编辑 + rt-batches 的破坏性更改 + 文档改进。
  • 0.1.2:更友好的用户文档。
  • 0.1.1:只有 README 被更新。
  • 0.1.0:第一个迭代。

依赖项

~1MB
~14K SLoC