3个版本
新 0.1.2 | 2024年8月14日 |
---|---|
0.1.1 | 2024年8月14日 |
0.1.0 | 2024年8月14日 |
#365 在 编码
279 每月下载量
63KB
1K SLoC
VSF (多用途存储格式)
VSF是一个开放标准的数据存储和表示格式。为了效率、安全性和适应性而设计,VSF旨在提供一种完整和统一的解决方案,用于存储和管理任何类型的数据,从简单的值到复杂的结构,如图像或3D对象。
主要功能
- 优化以提高效率和紧凑的尺寸
- 内置安全和有效性
- 透明数据交换
- 统一的元数据框架
- 在颜色和数据表示中的光谱精度
- 真实性证明和信任链
- 面向未来的设计,适用于技术进步
支持的数据类型
VSF支持一系列基本构造数据类型,包括无符号和有符号整数、浮点数、复数、布尔值、Unicode文本和数组。它还包括用于元数据(如标签、偏移量和版本)的VSF特定类型。
用法
以下是一个创建示例VSF结构的示例
use vsf::{VsfType, parse, EncodeNumber};
fn create_minimal_vsf() -> Result<Vec<u8>, std::io::Error> {
let mut vsf = vec!["RÅ".as_bytes().to_owned()];
// Header
let mut header_index = 0;
vsf[header_index].append(&mut b"<".to_vec());
let header_length_index = vsf.len();
let mut header_length = 42; // Placeholder
vsf.push(VsfType::b(header_length).flatten()?);
header_index = vsf.len();
vsf.push(VsfType::z(1).flatten()?); // Version
vsf[header_index].append(&mut VsfType::y(1).flatten()?); // Backward version
vsf[header_index].append(&mut VsfType::c(1).flatten()?); // Label definition count
vsf[header_index].append(&mut b"(".to_vec());
vsf[header_index].append(&mut VsfType::d("example data".to_string()).flatten()?);
let label_offset_index = vsf.len();
let mut label_offset = 42; // Placeholder
vsf.push(VsfType::o(label_offset).flatten()?);
let label_size_index = vsf.len();
let mut label_size = 42; // Placeholder
vsf.push(VsfType::b(label_size).flatten()?);
header_index = vsf.len();
vsf.push(VsfType::c(2).flatten()?); // Number of elements in example data
vsf[header_index].append(&mut b")".to_vec());
vsf[header_index].append(&mut b">".to_vec());
let header_end_index = vsf.len();
// Label set
header_index = vsf.len();
vsf.push(b"[".to_vec());
vsf[header_index].append(&mut b"(".to_vec());
vsf[header_index].append(&mut VsfType::d("example value one".to_string()).flatten()?);
vsf[header_index].append(&mut b":".to_vec());
vsf[header_index].append(&mut VsfType::f5(3.14159).flatten()?);
vsf[header_index].append(&mut b")".to_vec());
vsf[header_index].append(&mut b"(".to_vec());
vsf[header_index].append(&mut VsfType::d("example value two".to_string()).flatten()?);
vsf[header_index].append(&mut b":".to_vec());
vsf[header_index].append(&mut VsfType::s7(i128::MAX).flatten()?);
vsf[header_index].append(&mut b")".to_vec());
vsf[header_index].append(&mut b"]".to_vec());
let mut prev_header_length = 0;
let mut prev_label_offset = 0;
let mut prev_label_size = 0;
while header_length != prev_header_length
|| label_offset != prev_label_offset
|| label_size != prev_label_size
{
prev_header_length = header_length;
prev_label_offset = label_offset;
prev_label_size = label_size;
header_length = 0;
for i in 0..header_end_index {
header_length += vsf[i].len();
}
vsf[header_length_index] = VsfType::b(header_length * 8).flatten()?;
label_offset = header_length;
vsf[label_offset_index] = VsfType::o(label_offset * 8).flatten()?;
label_size = 0;
for i in header_end_index..vsf.len() {
label_size += vsf[i].len();
}
vsf[label_size_index] = VsfType::b(label_size * 8).flatten()?;
}
let vsf_vector: Vec<u8> = vsf.into_iter().flatten().collect();
Ok(vsf_vector)
}
未来功能
我们正在积极开发VSF以处理更复杂的数据结构!在未来版本中,您将能够
- 保存和加载具有所有光谱特性的图像
- 处理美味的数据类型和结构
- 实现更多更好的构造函数和析构函数
敬请期待更新!
许可证
VSF在自定义开源许可证下发布。您可以自由地用于、修改和分发VSF,包括商业用途。然而,销售VSF本身或直接派生的格式是不允许的。有关完整条款,请参阅存储库中的LICENSE文件。
贡献
我们欢迎贡献!如果您想为此项目做出贡献,请联系 [email protected]。
有关VSF或TOKEN系统的更多信息,请访问 https://sunsarrow.com/vsf。
依赖关系
~1MB
~28K SLoC