lusl 2.0.0

Lossless Uncompressed Serializer Library
Documentation

Lossless Uncompressed Serializer Library

Documentation

lusl is a library that serializes a directory containing multiple files into a single file and also deserializes it, like a tarball.

Features

  • Serialize a directory that contains multiple files.
  • Deserialize serialized file and restore to a directory.
  • Save and verify MD5 checksum of files for data integrity.
  • Provides a way to encrypt and compress the serialized file.

The encryption is done using XChaCha20-Poly1305 and the compression is done using zlib.

File Structure

See documents.

Usage

Serializing and deserializing without encrypting or compressing.

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());

Serializing and deserializing with encrypting and compressing.

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());