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 ;
let input = "key: \"value\"".to_string;
This does not compile, since [Object
] tries to borrow from the input:
# use ;
# let input = "key: \"value\"".to_string;
let object: = from_str?;
// --------------- ^^^^^^ borrowed value does not live long enough
// |
// type annotation requires that `input` is borrowed for `'static`
# Ok::
This works:
# use ;
# let input = "key: \"value\"".to_string;
let object: = from_str.map?;
# Ok::