2 releases

0.1.2 Nov 28, 2020
0.1.0 Oct 3, 2020

#2393 in Rust patterns

Download history 236/week @ 2023-12-03 569/week @ 2023-12-10 865/week @ 2023-12-17 2106/week @ 2023-12-24 449/week @ 2023-12-31 420/week @ 2024-01-07 581/week @ 2024-01-14 496/week @ 2024-01-21 959/week @ 2024-01-28 745/week @ 2024-02-04 1128/week @ 2024-02-11 397/week @ 2024-02-18 1405/week @ 2024-02-25 1243/week @ 2024-03-03 1657/week @ 2024-03-10 1417/week @ 2024-03-17

5,739 downloads per month
Used in 61 crates (2 directly)

MIT license

10KB
107 lines

Serde string helpers

Build Tests Lints codecov MIT licensed

Rust crate containing helpers for using serde with strings.

About

Currently there is only a helper for deserializing stringly values more efficiently by avoiding allocation (and copying) in certain cases. New helpers may appear in the future.

This crate is no_std but does require alloc.

DeserBorrowStr

A helper for deserializing using TryFrom more efficiently.

When using #[serde(try_from = "String"] when deserializing a value that doesn't need to hold the string (e.g. an integer value) serde would allocate the string even if it doesn't have to. (Such as in the case of non-escaped Json string.)

A naive idea is to use std::borrow::Cow to solve it. Sadly, the implementation of Deserialize for Cow<'de, str> doesn't borrow the string, so it still allocates needlessly. This helper solves the issue.

Our DeserBorrowStr is written such that it borrows the str when possible, avoiding the allocation. It may still need to allocate, for example if string decoding (unescaping) has to be performed.

MSRV

The official MSRV is 1.41.1 for now and may be lowered later.

License

MIT

Dependencies

~0.4–1MB
~23K SLoC