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 每月下载次数

MIT 许可协议

5MB
1.5K SLoC

无损未压缩序列化库

Documentation

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

依赖项