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 {