【发布时间】:2021-01-20 13:34:04
【问题描述】:
鉴于How to borrow a field for serialization but create it during deserialization? 的以下定义:
#[derive(Serialize)]
struct SerializeThing<'a> {
small_header: (u64, u64, u64),
big_body: &'a str,
}
#[derive(Deserialize)]
struct DeserializeThing {
small_header: (u64, u64, u64),
big_body: String,
}
如何实现 Borrow 特征,以便将拥有的数据自然地存储在(例如)HashMaps 中,并通过它们或借用的对应物查询它们?可能出现的最接近的情况如下:
impl DeserializeThing {
fn as_serialize(&self) -> SerializeThing<'_> {
let DeserializeThing { small_header, big_body } = self;
let small_header = *small_header;
let big_body = big_body.as_str();
SerializeThing { small_header, big_body }
}
}
这还不够。
【问题讨论】:
标签: rust traits borrow-checker