Rust 如何为一个trait中的类型实现一个命名生命周期,而该trait不';不接受生存期参数?

Rust 如何为一个trait中的类型实现一个命名生命周期,而该trait不';不接受生存期参数?,rust,Rust,我正在尝试为SQL Server实现r2d2::ManageConnection特性。我遇到的问题是,我要用于实现的连接结构需要一个生存期参数,但我不知道如何指定生存期 添加命名生存期会产生预期的错误 impl r2d2::ManageConnection for SQL_Server_Manager{ type Connection = odbc::Connection<'a, AutocommitOn>; type Connection = odbc::Connect

我正在尝试为SQL Server实现r2d2::ManageConnection特性。我遇到的问题是,我要用于实现的连接结构需要一个生存期参数,但我不知道如何指定生存期

添加命名生存期会产生预期的错误

 impl r2d2::ManageConnection for SQL_Server_Manager{
    type Connection = odbc::Connection<'a, AutocommitOn>;

type Connection = odbc::Connection<'a, AutocommitOn>;
                                   ^^ undeclared lifetime
impl r2d2::SQL\u服务器\u管理器的管理连接{
类型Connection=odbc::Connection;
^^未申报寿命
尝试使用未命名的生存期也会引发错误

type Connection = odbc::Connection<'_, AutocommitOn>;
                                    ^^ expected named lifetime parameter
impl<'a> r2d2::ManageConnection<'a> for SQL_Server_Manager{
                                ^^ unexpected lifetime argument

type Connection=odbc::Connection r2d2::ManageConnection如果在实现者类型中放入生存期(在您的情况下是
SQL\u Server\u Manager
),它将进行编译。必须在内部放入
PhantomData
才能使用此生存期并避免另一个编译错误

struct Foo,
}
特质{
类型连接;
fn fun(和self,con:self::Connection);
}
恳求{

type Connection=FooThank you!PhantomData类型实现就是我遇到的问题。
struct Foo<'a> {
    val: &'a str,
}

#[derive(Default)]
struct Bar<'a> {
    pd: std::marker::PhantomData<&'a u32>,
}

trait Trait {
    type Connection;
    fn fun(&self, con: Self::Connection);
}

impl<'a> Trait for Bar<'a> {
    type Connection = Foo<'a>;
    fn fun(&self, con: Self::Connection) {
        println!("Implemented {}", con.val);
    }
}

fn main() {
    let b = Bar::default();
    b.fun(Foo{ val:"FOO" }); // Implemented FOO
}