我有一个定义如下的结构体
struct Foo<'a> {
field1: &'a str,
field2: &'a str,
field3: &'a u8,
// ...
}
我使用mmap
映射文件来返回解析结果。对于一些成功的解析,我希望将结果存储以便后续处理,但由于各种原因,这些处理将在内存被释放之后进行。我可以采取以下方法:
struct OwnedFoo {
field1: String,
field2: String,
field3: Vec<u8>,
// ...
}
我想把所有我感兴趣的Foo
手动转换成OwnedFoos
。但是我在想是否可以这样做:
struct Foo<'a> {
field1: Cow<'a, str>,
field2: Cow<'a, str>,
field3: Cow<'a, u8>,
...
}
我想知道是否有一种方法可以自动拥有所有的,并擦除生命周期参数。我在库文档中没有找到任何相关的内容。
类似于:
let a = Foo { ... };
let a_owned = a.into_owned();
// do stuff with a_owned that I can't do with a
Foo
,但更关心的是使用的人体工程学。也就是说,不必定义新类型。 - dnaq