#cow #deserialize #serde #string #optimization

无 std serde_cow

一个针对 Cow 的更高效 serde 反序列化库

3 个版本

0.1.2 2024 年 7 月 17 日
0.1.1 2024 年 7 月 17 日
0.1.0 2024 年 3 月 24 日

#2154解析器实现

Download history 255/week @ 2024-04-15 493/week @ 2024-04-22 590/week @ 2024-04-29 286/week @ 2024-05-06 423/week @ 2024-05-13 434/week @ 2024-05-20 823/week @ 2024-05-27 1627/week @ 2024-06-03 1751/week @ 2024-06-10 2018/week @ 2024-06-17 1836/week @ 2024-06-24 1593/week @ 2024-07-01 2984/week @ 2024-07-08 3095/week @ 2024-07-15 3222/week @ 2024-07-22 2738/week @ 2024-07-29

12,268 每月下载量
用于 24 个 crates(通过 serenity

MIT 许可证

6KB
84

serde-cow

请参阅 docs.rs 上的文档或使用 cargo doc --no-deps --open 在本地构建。

最低支持的 Rust 版本

目前是 1.56,预计会增加破坏性更改。


lib.rs:

一个小型库,包含用于实现预期方式的 serde::DeserializeCow 包装器。

默认情况下,由于缺乏特殊化,[Cow] 总是反序列化为 Cow::Owned 变体,但此库提供 CowStrCowBytes,如果可能,将反序列化为 Cow::Borrowed,从原始数据借用。

示例

use std::borrow::Cow;

use serde_cow::CowStr;

let source = r#""Hello World""#;

let normal: Cow<str> = serde_json::from_str(source).unwrap();
assert!(matches!(normal, Cow::Owned(_))); // Wasteful!

let efficent: CowStr = serde_json::from_str(source).unwrap();
assert!(matches!(efficent.0, Cow::Borrowed(_))); // Zero copy!

最低支持的 Rust 版本

目前是 1.56,预计会增加破坏性更改。

依赖项

~110–345KB