Crates.io | serde_str_helpers |
lib.rs | serde_str_helpers |
version | 0.1.2 |
source | src |
created_at | 2020-10-03 19:09:00.623606 |
updated_at | 2020-11-28 14:32:18.926277 |
description | Helpers for using serde with strings |
homepage | https://github.com/LNP-BP |
repository | https://github.com/LNP-BP/rust-amplify |
max_upload_size | |
id | 295847 |
size | 9,940 |
Rust crate containing helpers for using serde with strings.
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.
The official MSRV is 1.41.1 for now and may be lowered later.
MIT