<Struct> 未实现特征“diesel::Insertable<schema::trd::table>”
The trait `diesel::Insertable<schema::trd::table>` is not implemented for <Struct>
我正在尝试使用 diesel 编写一个简单的插入语句,但我遇到了问题:
特性 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>>
我不确定我做错了什么。我尝试 google 但没有运气,而且对 rust 世界还很陌生,所以无法理解问题所在。谢谢!
我发现了问题。基本上,我尝试导入的 Struct
是一个完全不同的包。虽然它指的是正确的文件,但当我像 crate::
这样更改导入时,它工作得很好。早些时候它指的是像 my_trader::
这样的文件,它是由 IDE.
自动完成的
我正在尝试使用 diesel 编写一个简单的插入语句,但我遇到了问题:
特性 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>>
我不确定我做错了什么。我尝试 google 但没有运气,而且对 rust 世界还很陌生,所以无法理解问题所在。谢谢!
我发现了问题。基本上,我尝试导入的 Struct
是一个完全不同的包。虽然它指的是正确的文件,但当我像 crate::
这样更改导入时,它工作得很好。早些时候它指的是像 my_trader::
这样的文件,它是由 IDE.