#serde #detach #borrowing #type #cow-str #static #反序列化

serde-detach

不使用借用反序列化包含例如 Cow<str> 的类型

1 个不稳定版本

0.0.1 2020年8月26日

#42 in #borrowing

Download history 322/week @ 2024-03-14 289/week @ 2024-03-21 188/week @ 2024-03-28 144/week @ 2024-04-04 194/week @ 2024-04-11 157/week @ 2024-04-18 106/week @ 2024-04-25 145/week @ 2024-05-02 133/week @ 2024-05-09 162/week @ 2024-05-16 170/week @ 2024-05-23 172/week @ 2024-05-30 193/week @ 2024-06-06 149/week @ 2024-06-13 134/week @ 2024-06-20 73/week @ 2024-06-27

577 每月下载量
2 crates 中使用

MPL-2.0 许可证

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