8 个稳定版本
2.1.0 | 2023年2月4日 |
---|---|
2.0.2 | 2022年12月19日 |
1.2.2 | 2022年12月7日 |
1.1.0 | 2022年11月16日 |
#1378 in 解析器实现
28 每月下载次数
5MB
1.5K SLoC
无损未压缩序列化库
lusl
是一个库,可以将包含多个文件的目录序列化到一个文件中,也可以将其反序列化,类似于 tarball。
功能
- 序列化包含多个文件的目录。
- 反序列化已序列化的文件并恢复到目录。
- 保存并验证文件的 MD5 校验和以确保数据完整性。
- 提供加密和压缩序列化文件的方法。
加密使用 XChaCha20-Poly1305,压缩使用 zlib。
文件结构
见 文档。
用法
无加密或压缩的序列化和反序列化。
use lusl::{Serializer, Deserializer, SerializeOption};
use std::path::PathBuf;
// Serialize a directory into a file.
let original = PathBuf::from("tests");
let result = PathBuf::from("serialized.bin");
let mut serializer = Serializer::new(&original, &result).unwrap();
serializer.serialize().unwrap();
// Deserialize the file into a directory.
let restored = PathBuf::from("deserialized_dir");
let mut deserializer = Deserializer::new(&result, &restored).unwrap();
deserializer.deserialize().unwrap();
assert!(&result.is_file());
assert!(&restored.is_dir());
带加密和压缩的序列化和反序列化。
use lusl::{Serializer, Deserializer, SerializeOption};
use std::path::PathBuf;
// Serialize a directory into a file.
let original = PathBuf::from("tests");
let result = PathBuf::from("serialized.bin");
let mut serializer = Serializer::new(&original, &result).unwrap();
// Set the encryption key and compression option.
serializer.set_option(SerializeOption::new().to_encrypt("password").to_compress(true));
serializer.serialize().unwrap();
// Deserialize the file into a directory.
let restored = PathBuf::from("deserialized_dir");
let mut deserializer = Deserializer::new(&result, &restored).unwrap();
// Set the encryption key and compression option.
deserializer.set_option(SerializeOption::new().to_encrypt("password").to_compress(true));
deserializer.deserialize().unwrap();
assert!(&result.is_file());
assert!(&restored.is_dir());
测试
如果您想运行测试代码(如 cargo test
),请不要运行并行测试。
由于所有测试代码都是没有假设并行测试而编写的,这会导致多个错误。
要运行测试,请运行以下代码。
cargo test -- --test-threads=1