From trait实现的生命周期

时间:2015-05-15 01:50:43

标签: rust lifetime

我遇到了让生命实现正确的问题(再次......)的问题。

有一个帖子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 {
                                     ^~~

对我来说没有意义 - 终身参数就在那里。有什么遗漏?

1 个答案:

答案 0 :(得分:2)

生命周期在行的引用上,而不是行本身。为了使复制更容易,我定义了一个看似行的东西:

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 {