#indices #stability #structs #stable #structures #mainly #different

stable-id

此crate主要处理索引的发布和维护稳定性。

11个不稳定版本 (3个破坏性版本)

0.4.1 2023年2月24日
0.4.0 2023年2月24日
0.3.4 2023年2月7日
0.3.0 2023年1月30日
0.1.1 2023年1月19日

#8 in #mainly

每月26次下载

MIT/Apache

63KB
1.5K SLoC

概述

此crate主要处理索引的发布和维护稳定性。它提供了4个结构体,每个都帮助在不同的领域。这个库是为我的游戏开发努力而创建的。在那方面并不顺利,因为我一直在重启项目。然而,我注意到这些实用结构体反复出现,所以我为它们创建了一个crate。

安装

cargo add stable-id stable-id-traits derive-stable-id

文档

点击这里了解如何使用此crate。


lib.rs:

此crate主要处理索引的发布和维护稳定性。它提供了4个结构体,每个都帮助在不同的领域。

这个库是为我的游戏开发努力而创建的。在那方面并不顺利,因为我一直在重启项目。然而,我注意到这些实用结构体反复出现,所以我为它们创建了一个crate。

在版本0.2.0中,您可以提供基于无符号整数的自定义Id元组结构体(从8位到64位)。id类型需要以下推导

// Minimal needed for all traits that are introduced by this crate.
#[derive(derive_stable_id::StableId)]
struct Id(u8);


// These are needed under normal circumstances.
#[derive(derive_stable_id::StableId)]
struct Id32(u32);

let x: stable_id::Eids<Id32> = Default::default();
let x: stable_id::Sequence<Id32> = Default::default();
let x: stable_id::SparseEntities<Id32, String> = Default::default();
let x: stable_id::Entities<Id32, String> = Default::default();
let x: stable_id::Tec<Id32, String> = Default::default();

用例

结构体 类型 建议 描述
Eids Id 密集数据 您想创建id,并且关心恢复id。
Sequence Id 稀疏数据 您想创建id,并且不关心恢复id,但您不想使用基于HashMap的Entities结构体。
Entities 集合 密集数据 本库的常用集合。
SparseEntities 集合 稀疏数据 您想混合序列(id不回收)和HashMap。
[Tec] 集合 密集数据 您想使用vec来存储数据,但需要常数实体移除。[Tec]会在您插入更多新项目时为您回收空间。

依赖项

~1.5MB
~36K SLoC