9 releases
| 0.3.5 | Dec 10, 2025 |
|---|---|
| 0.3.4 | Nov 19, 2025 |
| 0.3.3 | Oct 8, 2025 |
| 0.3.2 | Jun 24, 2025 |
| 0.1.2 | Jul 8, 2024 |
#444 in Encoding
79,179 downloads per month
Used in 247 crates
(9 directly)
46KB
833 lines
Codee
Easy and flexible way of encoding and decoding data into either strings or bytes.
This crate provides generic traits for Encoders and Decoders as well as several
implementations for commonly used (de)serializer crates.
This makes it easily possible to abstract away the serialization and deserialization independent of the concrete crate used. You can write a function like this:
use codee::{CodecError, Decoder, Encoder};
fn store_value<T, Codec>(value: T) -> Result<(), CodecError<<Codec as Encoder<T>>::Error, <Codec as Decoder<T>>::Error>>
where
Codec: Encoder<T, Encoded = String> + Decoder<T, Encoded = str>,
{
let encoded = Codec::encode(&value).map_err(CodecError::Encode)?;
let decoded = Codec::decode(&encoded).map_err(CodecError::Decode)?;
Ok(())
}
// Then we can use it like this:
use codee::string::{JsonSerdeCodec, FromToStringCodec};
#[derive(serde::Serialize, serde::Deserialize)]
struct MyStruct {
field: usize,
}
store_value::<i32, FromToStringCodec>(42);
store_value::<MyStruct, JsonSerdeCodec>(MyStruct { field: 42 });
Dependencies
~0.2–1.6MB
~33K SLoC