#table #data #storage #column #raw #row-column #column-oriented

nightly type-erased-table

基于列向量的原始数据存储

1 个不稳定版本

0.1.0 2024年6月14日

#1503数据结构

MIT 许可证

14KB
215


type-erased-table

crates.io docs.rs

基于列向量的原始数据存储
报告错误

目录
  1. 关于项目
  2. 入门
  3. 使用
  4. 贡献
  5. 许可证
  6. 联系

关于项目

允许创建一个类似于表的结构的数组结构,该结构维护多个不同类型的数组,同时保持所有数组的相同大小,并在其整个生命周期中为每个属性创建一个共享索引。

提供 Table 结构体,允许存储由不同类型组成的数据行。此结构可以表示为一个 数组结构,并构建为一个 HashMap,其中键是列标识符,值是 Column。每个 Column 是一个连续的数组,并且每行组件都可以在每个 Column 中使用相同的索引访问。

(返回顶部)

构建工具

(返回顶部)

入门

这是使用此 crate 创建一个具有简单列的表结构体的示例。

安装

在 cargo.toml 中添加依赖项

[dependencies]
type-erased-table = "0.1.0"

(返回顶部)

使用

创建表格后,只需添加一个列并开始填充它。

let mut table = Table::new(1);

let value: u32 = 2;

// Get Layout from concrete type
let layout = Layout::for_value(&value);

// Create column with u32 identifier
let column_info = ColumnInfo::new(1, layout);

table.add_column(column_info);

let column = table.get_column_mut(1).unwrap();

// Push data into row of column by passing pointer as *const u8
unsafe { column.push(ptr::addr_of!(value) as *const u8) }

// Read value of row 0
let row_ptr = unsafe { column.get(0) };
let row_value: u32 = unsafe { (*row_ptr).into() };

(返回顶部)

贡献

贡献是使开源社区成为一个如此美妙的学习、灵感和创造之地的原因。您所做的任何贡献都将受到 高度赞赏

如果您有任何改进建议,请分叉存储库并创建一个拉取请求。别忘了为项目加星!再次感谢!

  1. 分叉项目
  2. 创建您的功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开拉取请求

(返回顶部)

许可证

在MIT许可证下分发。

(返回顶部)

联系

项目链接: https://github.com/ValentinRio/type-erased-table

(返回顶部)

依赖项

约15KB