【发布时间】:2015-04-22 19:11:06
【问题描述】:
我想按照以下思路做一些事情:
trait GetRef<'a> {
fn get_ref(&self) -> &'a [u8];
}
struct Foo<'a> {
buf: &'a [u8]
}
impl <'a> GetRef<'a> for Foo<'a> {
fn get_ref(&self) -> &'a [u8] {
&self.buf[1..]
}
}
struct Bar {
buf: Vec<u8>
}
// this is the part I'm struggling with:
impl <'a> GetRef<'a> for Bar {
fn get_ref(&'a self) -> &'a [u8] {
&self.buf[1..]
}
GetRef trait 中显式生命周期变量的要点是允许 Foo 对象上的 get_ref() 的返回值比 Foo 本身的寿命更长,将返回值的生命周期与生命周期的生命周期联系起来Foo 的缓冲区。
但是,我还没有找到以编译器接受的方式为Bar 实现GetRef 的方法。我已经尝试了上述几种变体,但似乎找不到一种有效的变体。有什么理由根本无法做到这一点?如果没有,我该怎么做?
【问题讨论】: