<Struct> 没有实现特征 `diesel::Insertable<schema::trd::table>`
Posted
技术标签:
【中文标题】<Struct> 没有实现特征 `diesel::Insertable<schema::trd::table>`【英文标题】:The trait `diesel::Insertable<schema::trd::table>` is not implemented for <Struct> 【发布时间】:2021-12-05 01:43:50 【问题描述】:我正在尝试使用柴油编写一个简单的插入语句,但我遇到了问题:
特性diesel::Insertableschema::tbl::table 没有实现
我的插入看起来像:
pub fn insert_trades(trades : Struct)
use super::super::schema::tbl::dsl::*;
let conn : &PgConnection = &establish_connection().get().unwrap();
insert_into(tbl).values(&trades).get_result(conn);
我的结构看起来像:
#[derive(Debug, Serialize, Deserialize, Insertable, Queryable)]
#[table_name = "tbl"]
pub struct Struct
pub trade_id: Option<String>,
pub event_time: Option<i64>,
pub event_type: Option<String>,
pub trade_time: Option<i64>,
pub symbol: Option<String>,
pub buyer_id: Option<i64>,
pub seller_id: Option<i64>,
pub price: Option<String>,
pub quantity: Option<String>
Schema.rs
table!
tbl (trade_id)
trade_id -> Varchar,
event_time -> Int8,
event_type -> Varchar,
trade_time -> Int8,
symbol -> Varchar,
buyer_id -> Int8,
seller_id -> Int8,
price -> Varchar,
quantity -> Varchar,
编译器抛出的问题是:
error[E0277]: the trait bound `&my_trader::models::trade::Struct: diesel::Insertable<schema::tbl::table>` is not satisfied
--> src/service/trade_service.rs:8:40
|
8 | insert_into(tbl).values(&trades).get_result(conn);
| ^^^^^^^ the trait `diesel::Insertable<schema::tbl::table>` is not implemented for `&my_trader::models::trade::Struct`
|
= help: the following implementations were found:
<&'insert my_trader::models::trade::Struct as diesel::Insertable<my_trader::schema::tbl::table>>
<my_trader::models::trade::Struct as diesel::Insertable<my_trader::schema::tbl::table>>
我不确定我做错了什么。我试图用谷歌搜索,但没有运气,而且对 rust 世界很陌生,所以不知道问题出在哪里。谢谢!
【问题讨论】:
您好,您声明了带有选项且没有引用的结构。这个帖子能帮到你吗? ***.com/questions/55859061/… 请发布完整的错误信息,包括上下文信息和编译器建议。 【参考方案1】:我发现了问题。基本上我试图导入的Struct
是一个完全不同的包。虽然它指的是正确的文件,但当我像 crate::
这样更改导入时,它工作得非常好。之前它指的是像 my_trader::
这样的文件,它是由 IDE 自动完成的。
【讨论】:
以上是关于<Struct> 没有实现特征 `diesel::Insertable<schema::trd::table>`的主要内容,如果未能解决你的问题,请参考以下文章
`diesel_geography::types::GeogPoint` 没有实现特征 `serde::Deserialize<'_>`
`chrono::DateTime<chrono::Utc>` 没有实现特征`std::ops::Add<std::time::Duration>`