19个版本
0.6.2 | 2024年7月29日 |
---|---|
0.6.0 | 2024年5月23日 |
0.5.5 | 2024年1月6日 |
0.5.0 | 2023年9月26日 |
0.2.3 | 2021年11月23日 |
#43 in 压缩
473 每月下载量
用于 3 个crate (2 个直接)
84KB
1.5K SLoC
vach
,发音类似于“puck”,但带有“v”,是一种归档和资源传输格式。它是为了安全、封装和保护而构建的。实际上,它是由 SCP 设计的,以在传输过程中保持异常资源紧凑和安全。vach
的一个主要优点是它赋予了用户精细的控制权,因为它允许每条记录独立配置。 vach
还内置了对多种压缩方案(LZ4、Snappy和Brolti)的支持、数据签名、叶 位标志、加密 以及一定程度的归档定制。查看 vach
规范在 spec.txt。任何和 所有 的帮助都将非常感激,尤其是校对文档和代码审查。
⛏ 这适合谁?
- 你刚刚发布了一些软件,不想你的资源被盗版或轻易读取。
- 你希望有一个简单方便的方式来管理、解压缩、解密和验证分发中的资源。
- 你希望有一个纯Rust™️归档格式,没有任何C绑定(将来可能会提供C绑定)。
- 你希望你的软件整洁,并且所有资源都在一个整洁的安全容器中。
- 你喜欢轨道炮。
🧷 简单用法
use std::fs::File;
use vach::prelude::{Archive, Resource, Flags};
let source = File::open("sounds.vach")?;
let mut archive = Archive::new(source)?;
let resource: Resource = archive.fetch_mut("footstep.wav")?;
// By default all resources are flagged as NOT secure
assert!(!resource.authenticated);
// Use the data
use my_crate::Sound;
println!("{}", Sound::new(resource.data.as_slice())?);
// Read data directly into an `io::Write` stream
let mut buffer = Vec::new();
let (flags, content_version, is_secure) = archive.fetch_mut("ftstep", &mut buffer)?;
依赖关系
~0.3–3MB
~101K SLoC