1 个不稳定版本
0.0.1 | 2020年8月26日 |
---|
#42 in #borrowing
577 每月下载量
在 2 crates 中使用
12KB
261 行
推动 Serde 在可能的情况下反序列化到完全拥有的 ('static
) 实例。
这主要在您有一个可以选择借用输入的结构(例如,思考 Cow<str>
或 Cow<[u8]>
.),但需要一个 DeserializeOwned
(不幸的是,这似乎很常见)的反序列化器时非常有用。
使用这种方法反序列化只借用的类型(如普通引用)会导致运行时错误。
示例
给定
use {
serde_detach::detach,
serde_object::Object,
serde_taml::de::from_str,
};
let input = "key: \"value\"".to_string();
这不能编译,因为 Object
尝试从输入中借用
let object: Object<'static> = from_str(&input, &mut ())?;
// --------------- ^^^^^^ borrowed value does not live long enough
// |
// type annotation requires that `input` is borrowed for `'static`
这可行
let object: Object<'static> = from_str(&input, &mut ()).map(detach)?;
依赖关系
~140–385KB