Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 在为Diesel结构实现get和delete traits时,评估需求“\:std::marker::Sized”时溢出_Rust_Traits_Rust Diesel - Fatal编程技术网

Rust 在为Diesel结构实现get和delete traits时,评估需求“\:std::marker::Sized”时溢出

Rust 在为Diesel结构实现get和delete traits时,评估需求“\:std::marker::Sized”时溢出,rust,traits,rust-diesel,Rust,Traits,Rust Diesel,我正在尝试一些方便的方法,以便在banana的一个实例上调用banana.get(&conn,&pk)或banana.delete(&conn),但我无法正确获得特征边界,并且似乎不断出现递归错误: Cargo.toml [package] name = "m" version = "0.1.0" edition = "2018" [dependencies] diesel = { version = "1.4.5"

我正在尝试一些方便的方法,以便在
banana
的一个实例上调用
banana.get(&conn,&pk)
banana.delete(&conn)
,但我无法正确获得特征边界,并且似乎不断出现递归错误:

Cargo.toml

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

[dependencies]
diesel = { version = "1.4.5", features = ["postgres"] }
src/lib.rs

使用柴油机::PG连接;
使用柴油:{
关联:{HasTable,identificatable},
删除,
query_dsl::QueryDsl,
结果::QueryResult,
};
发布特征数据库模型:HasTable+identificated+QueryDsl{
fn得到(
连接:&PG连接,
主键:&::Id,
)->QueryResult{
Self::table().find(pk).first(conn)
}
fn delete(&self,conn:&PgConnection)->QueryResult{
删除(自我)。执行(连接)
}
}
生成时出错:

error[E0275]:评估需求溢出`\uU2:std::marker::size`
-->src/lib.rs:14:23
|
14 | Self::table().find(pk).first(conn)
|                       ^^^^
|
=帮助:考虑添加一个“γ”![recursion\u limit=“256”]`属性到您的板条箱(`m`)
=注意:由于“:”查询的“diesel::query\u dsl::filter\u dsl::FilterDsl”impl上的要求,因此需要此选项`
注释掉
get
delete
的错误:

error[E0275]:评估需求溢出`\uU2:std::marker::size`
-->src/lib.rs:18:9
|
18 |删除(自我)。执行(连接)
|         ^^^^^^
| 
::/home/danj/.cargo/registry/src/github.com-1ec6299db9ec823/diesel-1.4.5/src/query\u builder/functions.rs:135:18
|
135 | pub fn delete(来源:T)->delete语句{
|--------------此绑定在`diesel::query\u builder::functions::delete'中需要`
|
=帮助:考虑向你的板条(m)添加一个'y.[RealsixLimeLime=“256”]属性。
=注意:由于“:”查询的“diesel::query\u dsl::filter\u dsl::FilterDsl”impl上的要求,因此需要此选项`
=注意:由于“`&Self”的“diesel::query\u builder::update\u语句::target::IntoUpdateTarget`的impl上的要求,因此必需`

每晚使用
cargo 1.46.0进行编译(c26576f9a 2020-06-23)

您的问题似乎可以通过;的答案来回答。如果没有,请您的问题解释差异。否则,我们可以将此问题标记为已回答。您需要添加
中提到的边界之一注意:由于编译器输出到y的impl of…
的要求,需要添加此边界我们的特征边界。如果发生了其他错误,只要继续添加特征边界就可以了。@weiznich,所以我一直这样做,直到我到达了私有特征边界,并且不知道如何进一步:@weiznich,基本上我已经将
get
delete
方法复制到了每个
impl
中对于我的实体来说,这感觉很不干燥;代码看起来应该能够被提取到一个特征中,但这对我来说非常困难:首先,您将类似查询的“复制”称为“不干燥”,但您会将普通SQL语句中的
INSERT-into
的重复称为“不干燥”吗?(如果不是,diesel dsl基本上是相同的)。除此之外,对于您可能希望在
diesel::dsl
中公开的TypeDef中使用的私有类型,在这种情况下类似于
diesel::dsl::Filter