3 releases
0.1.2 | Jul 17, 2024 |
---|---|
0.1.1 | Jul 17, 2024 |
0.1.0 | Mar 24, 2024 |
#1566 in Parser implementations
18,416 downloads per month
Used in 32 crates
(via serenity)
6KB
84 lines
serde-cow
See the documentation on docs.rs or build locally with cargo doc --no-deps --open
.
Minimum Supported Rust Version
This is currently 1.56 and is considered a breaking change to increase.
lib.rs
:
A small library with a [Cow
] wrappers that implements serde::Deserialize
in the ways that should be expected.
By default, [Cow
] is always deserialized to the Cow::Owned
variant due to a lack of specialisation, but this library
provides CowStr
and CowBytes
which deserialize to Cow::Borrowed
if possible, borrowing from the original data.
Example
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!
Minimum Supported Rust Version
This is currently 1.56 and is considered a breaking change to increase.
Dependencies
~110–345KB