在实现Diesel结构的获取和删除特征时评估要求_的溢出:std :: marker :: Sized

问题描述

我正在尝试制定一些便利的方法,以便可以在banana.get(&conn,&pk)的实例上调用banana.delete(&conn)Banana,但是我无法获得正确的特征范围并且似乎保持不变遇到递归错误

Cargo.toml

[package]
name = "m"
version = "0.1.0"
edition = "2018"

[dependencies]
diesel = { version = "1.4.5",features = ["postgres"] }

src / lib.rs

use diesel::PgConnection;
use diesel::{
    associations::{HasTable,Identifiable},delete,query_dsl::QueryDsl,result::QueryResult,};

pub trait DbModel: HasTable + Identifiable + QueryDsl {
    fn get(
        conn: &PgConnection,pk: &<Self as Identifiable>::Id,) -> QueryResult<Self> {
        Self::table().find(pk).first(conn)
    }

    fn delete(&self,conn: &PgConnection) -> QueryResult<usize> {
        delete(self).execute(conn)
    }
}

构建错误

error[E0275]: overflow evaluating the requirement `_: std::marker::Sized`
  --> src/lib.rs:14:23
   |
14 |         Self::table().find(pk).first(conn)
   |                       ^^^^
   |
   = help: consider adding a `#![recursion_limit="256"]` attribute to your crate (`m`)
   = note: required because of the requirements on the impl of `diesel::query_dsl::filter_dsl::FilterDsl<_>` for `<<Self as diesel::associations::HasTable>::Table as diesel::query_builder::AsQuery>::Query`

delete被注释掉时get错误

error[E0275]: overflow evaluating the requirement `_: std::marker::Sized`
   --> src/lib.rs:18:9
    |
18  |         delete(self).execute(conn)
    |         ^^^^^^
    | 
   ::: /home/danj/.cargo/registry/src/github.com-1ecc6299db9ec823/diesel-1.4.5/src/query_builder/functions.rs:135:18
    |
135 | pub fn delete<T: IntoUpdateTarget>(source: T) -> DeleteStatement<T::Table,T::WhereClause> {
    |                  ---------------- required by this bound in `diesel::query_builder::functions::delete`
    |
    = help: consider adding a `#![recursion_limit="256"]` attribute to your crate (`m`)
    = note: required because of the requirements on the impl of `diesel::query_dsl::filter_dsl::FilterDsl<_>` for `<<Self as diesel::associations::HasTable>::Table as diesel::query_builder::AsQuery>::Query`
    = note: required because of the requirements on the impl of `diesel::query_builder::update_statement::target::IntoUpdateTarget` for `&Self`

使用cargo 1.46.0-nightly (c26576f9a 2020-06-23)

进行编译

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)