2 个版本

0.0.2 2020 年 9 月 11 日
0.0.1 2020 年 8 月 23 日

#1891Rust 模式

每月 30 次下载

MIT/Apache

39KB
863

仓库:各种实体的仓库。

Repository 为多种数据类型提供存储,它提供自己的一种索引处理方式,称为 EntityId,以及自己的一种类型处理方式,称为 EntityPtr<T>。通过这些处理方式,它允许在同一 Repository 中的值之间轻松引用。

当您拥有整个仓库的对应引用时,可以访问 EntityPtr<T> 处理方式背后的数据。

当您知道其类型并拥有整个仓库的对应引用时,可以访问 EntityId 处理方式背后的数据。

使用示例

// create a repository.
let mut repo = Repo::new();

// insert and retrieve a pointer handle.
let a = repo.insert(42i32);
assert_eq!(42i32, *a.get_ref(&repo).unwrap());

// insert and retrieve a index handle.
let b = repo.insert_for_id(42i32);

// downcast from index handle to pointer handle.
let b_ptr = b.cast_ptr::<i32>(&repo).unwrap();
assert_eq!(42i32, *b_ptr.get_ref(&repo).unwrap());

// downcasting fails when type is incorrect.
let b_wrong_ptr = b.cast_ptr::<u32>(&repo);
assert_eq!(None, b_wrong_ptr);

许可证

根据您的选择,在 Apache 许可证,版本 2.0MIT 许可证 下授权。
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在此包中的任何贡献,将根据上述方式双重授权,而无需任何额外的条款或条件。

依赖项

~1.2–1.7MB
~32K SLoC