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 在 数据库接口
70 每月下载
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()
,可以将带有名称的行添加到表中。名称允许表跟踪行的索引,以便将来引用。