2 个版本
0.0.2 | 2020 年 9 月 11 日 |
---|---|
0.0.1 | 2020 年 8 月 23 日 |
#1891 在 Rust 模式
每月 30 次下载
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.0 或 MIT 许可证 下授权。除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在此包中的任何贡献,将根据上述方式双重授权,而无需任何额外的条款或条件。
依赖项
~1.2–1.7MB
~32K SLoC