我有自己的trait来扩展PgExecutor
trait提供的功能。
我想在任何实现PgExecutor
的东西上实现这些trait,但老实说,我很难做到这一点。
#[async_trait]
impl<'a, T> PgExecutorExt for T
where T: PgExecutor<'a> + Sync
{
async fn my_read_method(&self) -> anyhow::Result<()> {
sqlx::query_as!(...)
.fetch_one(self)
.await?;
Ok(())
}
}
但我得到以下错误:
the trait bound `&T: Executor<'_>` is not satisfied
the trait `Executor<'_>` is not implemented for `&T`
关于.fetch_one(self)
调用
有人知道发生了什么吗谢谢!
1条答案
按热度按时间ws51t4hk1#
Executor::fetch_one()
函数接受self
,而不是&self
。您需要在trait定义和这个实现中将&self
更改为self
,这样就可以解决这个问题了。