#codec #deserialize #serialization #utilities #serde-derive

codee

将数据编码和解码到字符串或字节的简单灵活方式

4个版本

新版本 0.2.0 2024年8月23日
0.1.2 2024年7月8日
0.1.1 2024年7月7日
0.1.0 2024年7月7日

#698 in 编码

Download history 406/week @ 2024-07-05 101/week @ 2024-07-12 78/week @ 2024-07-19 1245/week @ 2024-07-26 1812/week @ 2024-08-02 1614/week @ 2024-08-09 2164/week @ 2024-08-16

6,852 每月下载量
9 个crate中使用 (通过 leptos-use)

MIT/Apache

38KB
620

Codee

Crates.io Docs MIT/Apache 2.0 Build Status

将数据编码和解码到字符串或字节的简单灵活方式。

这个crate提供了泛型特质用于 EncoderDecoder,以及几个常用(反)序列化crate的实现。

这使得在不考虑具体crate的情况下进行序列化和反序列化抽象变得容易。您可以编写这样的函数

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

依赖项

~0.3–1.6MB
~35K SLoC