#table #anonymous #size #hold #regardless #store #data

bin+lib anonymous_table

一种存储数据而不考虑类型的方法

11 个版本

0.3.3 2024 年 4 月 28 日
0.3.2 2024 年 4 月 4 日
0.2.4 2024 年 1 月 31 日
0.1.1 2024 年 1 月 28 日

#1213数据库接口

Download history 25/week @ 2024-04-09 130/week @ 2024-04-23 32/week @ 2024-04-30 1/week @ 2024-05-14 6/week @ 2024-05-21 1/week @ 2024-05-28 4/week @ 2024-06-04 2/week @ 2024-06-11 48/week @ 2024-07-02 22/week @ 2024-07-09

70 每月下载

MIT 许可证

28KB
657

匿名表


这是什么?

匿名表是一种可以存储任何形式数据的表,无论类型或大小。

u16 &str u128
String bool CustomStruct

为什么它有帮助?

想象一下,你正在设计一个简单的 2d 游戏,该游戏充满了不同的形状,这些形状都有自己的属性。由于某种原因,这些属性要求不同的形状有不同的类型。为了跟踪所有形状,你决定将它们存储在一个 [Vec] 中。

由于每个形状都是它自己的特殊结构体,你有以下几种存储它们的方法

  • 使用一些枚举 enum Shape{ Shape1, Shape2, ... } Vec<Shape>
  • 或者有一个 Shape Trait 并使用 Vec<Box<dyn Shape>>

使用枚举可能会成为负担,因为添加和删除游戏中的形状需要更新枚举和使用它的匹配语句。

使用特例对象可能可行,但并不有趣或容易使用。

[匿名表] 允许简单存储和检索数据,无需过多担心生命周期或借用(表拥有传递给它的任何数据)。


如何使用?

匿名表可以通过new()with_capacity()方法创建。'with_capacity()'确定表中将保留的行数。单元格不是直接从表或通过表访问,而是由[匿名行]持有。匿名行以与表相同的方式创建,可以推送到表中。使用[匿名行].register_named_row(),可以将带有名称的行添加到表中。名称允许表跟踪行的索引,以便将来引用。

无运行时依赖