问题描述
我正在尝试制定一些便利的方法,以便可以在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 (将#修改为@)