如何在相关类型中定义生命周期?

时间:2018-01-26 13:00:36

标签: rust lifetime

我正在开发一个Rust crate,它使用几个可用的库来打开网络接口。该项目包括:

  • 特质Library和实施LibraryALibraryBLibraryC
  • 特质Interface及其实施InterfaceAInterfaceBInterfaceC。所有接口都引用了它们的库。
trait Interface<'a> {
    fn do_something();
}

trait Library {
    type LI: for<'a> Interface<'a>;
    fn open_interface(&self) -> Self::LI;
}

struct LibraryA {
    abc: i32,
}

struct InterfaceA<'a> {
    abc: &'a i32,
}

impl Library for LibraryA {
    type LI = InterfaceA<'a>;

    fn open_interface(&self) -> Self::LI {
        unimplemented!()
    }
}

impl<'a> Interface<'a> for InterfaceA<'a> {
    fn do_something() {
        unimplemented!()
    }
}

这不能编译,因为我不知道如何定义关联类型LI

error[E0261]: use of undeclared lifetime name `'a`
  --> src/main.rs:19:26
   |
19 |     type LI = InterfaceA<'a>;
   |                          ^^ undeclared lifetime

这里很棘手 - LibraryA没有任何实际生命周期(没有引用外部对象),我找不到任何方法来定义LI类型被定义的生命周期。< / p>

0 个答案:

没有答案