From 特征实现的生命周期
Lifetime for a From trait implementation
我在为 trait 实现正确的生命周期(再次...)时遇到问题。
有一个 postgres Row,我想将其转换成我自己的结构,如下所示:
impl<'a> From<&'a Row> for Video {
fn from(row: &Row) -> Video {
Video {
video_id: row.get("video_id"),
...
}
}
}
但是我得到这样的错误:
src/entities.rs:46:19: 46:22 error: wrong number of lifetime parameters: expected 1, found 0 [E0107]
src/entities.rs:46 impl<'a> From<&'a Row> for Video {
^~~
这对我来说没有意义 - 生命周期参数就在那里。缺少什么?
生命周期在对行的引用上,而不是行本身。为了使复制更容易,我定义了一些看起来像行的东西:
struct Foo<'a> {
s: &'a str,
}
当我们实现时,我们需要这样做:
impl<'a> From<&'a Foo<'a>> for String {
fn from(row: &Foo) -> String {
row.s.to_string()
}
}
这有意义吗?如果您没有参考资料:
impl<'a> From<Foo<'a>> for String {
我在为 trait 实现正确的生命周期(再次...)时遇到问题。
有一个 postgres Row,我想将其转换成我自己的结构,如下所示:
impl<'a> From<&'a Row> for Video {
fn from(row: &Row) -> Video {
Video {
video_id: row.get("video_id"),
...
}
}
}
但是我得到这样的错误:
src/entities.rs:46:19: 46:22 error: wrong number of lifetime parameters: expected 1, found 0 [E0107]
src/entities.rs:46 impl<'a> From<&'a Row> for Video {
^~~
这对我来说没有意义 - 生命周期参数就在那里。缺少什么?
生命周期在对行的引用上,而不是行本身。为了使复制更容易,我定义了一些看起来像行的东西:
struct Foo<'a> {
s: &'a str,
}
当我们实现时,我们需要这样做:
impl<'a> From<&'a Foo<'a>> for String {
fn from(row: &Foo) -> String {
row.s.to_string()
}
}
这有意义吗?如果您没有参考资料:
impl<'a> From<Foo<'a>> for String {