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

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.

```rust 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.isfile()); assert!(&restored.isdir()); ```

Serializing and deserializing with encrypting and compressing.

```rust 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.setoption(SerializeOption::new().toencrypt("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.setoption(SerializeOption::new().toencrypt("password").to_compress(true)); deserializer.deserialize().unwrap();

assert!(&result.isfile()); assert!(&restored.isdir()); ```