1 unstable release
0.0.1 | Aug 26, 2020 |
---|
#44 in #borrowing
1,462 downloads per month
Used in 2 crates
12KB
261 lines
Nudges Serde to deserialise into fully owned ('static
) instances where this is possible.
This is primarily useful when you have a structure that can optionally borrow the input (Think Cow<str>
or Cow<[u8]>
.), but a deserialiser that requires DeserializeOwned
(which unfortunately seems to be common).
Deserialising borrow-only types (like plain references) naturally leads to a runtime error with this method.
Example
Given:
use {
serde_detach::detach,
serde_object::Object,
serde_taml::de::from_str,
};
let input = "key: \"value\"".to_string();
This does not compile, since Object
tries to borrow from the input:
let object: Object<'static> = from_str(&input, &mut ())?;
// --------------- ^^^^^^ borrowed value does not live long enough
// |
// type annotation requires that `input` is borrowed for `'static`
This works:
let object: Object<'static> = from_str(&input, &mut ()).map(detach)?;
Dependencies
~135–365KB