#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 • Rust 包仓库 255/week @ 2024-04-15 • Rust 包仓库 493/week @ 2024-04-22 • Rust 包仓库 590/week @ 2024-04-29 • Rust 包仓库 286/week @ 2024-05-06 • Rust 包仓库 423/week @ 2024-05-13 • Rust 包仓库 434/week @ 2024-05-20 • Rust 包仓库 823/week @ 2024-05-27 • Rust 包仓库 1627/week @ 2024-06-03 • Rust 包仓库 1751/week @ 2024-06-10 • Rust 包仓库 2018/week @ 2024-06-17 • Rust 包仓库 1836/week @ 2024-06-24 • Rust 包仓库 1593/week @ 2024-07-01 • Rust 包仓库 2984/week @ 2024-07-08 • Rust 包仓库 3095/week @ 2024-07-15 • Rust 包仓库 3222/week @ 2024-07-22 • Rust 包仓库 2738/week @ 2024-07-29 • Rust 包仓库

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