Skip to content

Utilities for serializing with multiple formats of data in Rust.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

khonsulabs/transmog

Transmog

Universal data serialization utilities for Rust.

Transmog forbids unsafe code crate version Live Build Status HTML Coverage Report for main branch Documentation for main branch

Rust has a vibrant ecosystem chock full of serialization crates. Many crates implement a common set of traits via Serde, but other crates can not or chose not to support Serde.

At the end of the day, however, most serialization formats can be interacted with in a generic fashion. The Format trait aims to be the universal serialization trait for any crate that can serialize from a std::io::Read and deserialize from a std::io::Write.

Status of this project

We are currently at the experimentation phase of creating this ecosystem. All constructive criticism, format requests, and questions are welcome on Github Issues. We are looking to use this crate as a strategy of offering versioned data support in BonsaiDb as well as customizable serialization support for Fabruic.

Serialization format support

We accept pull requests for any moderately stable serialization API.

Utilities for migrating data structures

Sometimes a breaking change is unavoidable. Perhaps, you've decided a different format is better for your situation. Or, you refactored your structure so much that serde's built-in attributes aren't enough to help. transmog-versions to the rescue!

The transmog-versions crate provides APIs that allow you to treat your currently stored data as "version 0" and provide the logic for handling loading each version of data.

Plans to add a derive macro to remove even more boilerplate code is planned.

Serializing/Deserializing from a futures::Stream

The transmog-async crate is a fork of async-bincode, altered to support the Format trait.

Open-source Licenses

This project, like all projects from Khonsu Labs, are open-source. This repository is available under the MIT License or the Apache License 2.0.

To learn more about contributing, please see CONTRIBUTING.md.

About

Utilities for serializing with multiple formats of data in Rust.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Languages