Rust Diesel:不满足特征约束 `NaiveDateTime: Deserialize<'_>`
Rust Diesel: the trait bound `NaiveDateTime: Deserialize<'_>` is not satisfied
我不熟悉铁锈和柴油。并尝试使用 Rocket 框架创建一个小演示 api。
出现错误:特征界限NaiveDateTime: Deserialize<'_>
不满足
我用谷歌搜索并找到了一些有用的链接,如下所示:https://github.com/serde-rs/serde/issues/759
好像是版本问题。
这是我的文件:
schema.rs
table! {
department (dept_id) {
dept_id -> Int4,
dept_name -> Nullable<Text>,
created_on -> Nullable<Timestamp>,
created_by -> Nullable<Text>,
modified_on -> Nullable<Timestamp>,
modified_by -> Nullable<Text>,
is_active -> Nullable<Bool>,
}
}
cargo.toml
[dependencies]
diesel = { version = "1.4.5", features = ["postgres","chrono","numeric"] }
dotenv = "0.15.0"
chrono = { version = "0.4.19" }
bigdecimal = { version = "0.1.0" }
rocket = "0.4.6"
rocket_codegen = "0.4.6"
r2d2-diesel = "1.0.0"
r2d2 = "0.8.9"
serde = { version = "1.0.118", features = ["derive"] }
serde_derive = "1.0.118"
serde_json = "1.0.60"
[dependencies.rocket_contrib]
version = "*"
default-features = false
features = ["json"]
model.rs
#![allow(unused)]
#![allow(clippy::all)]
use super::schema::department;
use serde::Serialize;
use serde::Deserialize;
use chrono::NaiveDateTime;
use bigdecimal::BigDecimal;
#[derive(Queryable, Debug, Identifiable, Serialize, Deserialize)]
#[primary_key(dept_id)]
#[table_name = "department"]
pub struct Department {
pub dept_id: i32,
pub dept_name: Option<String>,
pub created_on: Option<NaiveDateTime>,
pub created_by: Option<String>,
pub modified_on: Option<NaiveDateTime>,
pub modified_by: Option<String>,
pub is_active: Option<bool>,
}
main.rs
#[macro_use]
extern crate diesel;
extern crate dotenv;
extern crate serde;
extern crate serde_derive;
extern crate serde_json;
extern crate chrono;
extern crate bigdecimal;
mod models;
mod schema;
mod connection;
fn main() {
println!("Hello, Home!");
}
谁能帮我解决这个问题?
谢谢!
Chrono has some optional features 您必须启用。
在这种情况下,您需要将 serde
作为可选功能包含在 Cargo.toml
:
的 chrono
依赖项配置中
chrono = { version = "0.4", features = ["serde"] }
我不熟悉铁锈和柴油。并尝试使用 Rocket 框架创建一个小演示 api。
出现错误:特征界限NaiveDateTime: Deserialize<'_>
不满足
我用谷歌搜索并找到了一些有用的链接,如下所示:https://github.com/serde-rs/serde/issues/759
好像是版本问题。
这是我的文件:
schema.rs
table! {
department (dept_id) {
dept_id -> Int4,
dept_name -> Nullable<Text>,
created_on -> Nullable<Timestamp>,
created_by -> Nullable<Text>,
modified_on -> Nullable<Timestamp>,
modified_by -> Nullable<Text>,
is_active -> Nullable<Bool>,
}
}
cargo.toml
[dependencies]
diesel = { version = "1.4.5", features = ["postgres","chrono","numeric"] }
dotenv = "0.15.0"
chrono = { version = "0.4.19" }
bigdecimal = { version = "0.1.0" }
rocket = "0.4.6"
rocket_codegen = "0.4.6"
r2d2-diesel = "1.0.0"
r2d2 = "0.8.9"
serde = { version = "1.0.118", features = ["derive"] }
serde_derive = "1.0.118"
serde_json = "1.0.60"
[dependencies.rocket_contrib]
version = "*"
default-features = false
features = ["json"]
model.rs
#![allow(unused)]
#![allow(clippy::all)]
use super::schema::department;
use serde::Serialize;
use serde::Deserialize;
use chrono::NaiveDateTime;
use bigdecimal::BigDecimal;
#[derive(Queryable, Debug, Identifiable, Serialize, Deserialize)]
#[primary_key(dept_id)]
#[table_name = "department"]
pub struct Department {
pub dept_id: i32,
pub dept_name: Option<String>,
pub created_on: Option<NaiveDateTime>,
pub created_by: Option<String>,
pub modified_on: Option<NaiveDateTime>,
pub modified_by: Option<String>,
pub is_active: Option<bool>,
}
main.rs
#[macro_use]
extern crate diesel;
extern crate dotenv;
extern crate serde;
extern crate serde_derive;
extern crate serde_json;
extern crate chrono;
extern crate bigdecimal;
mod models;
mod schema;
mod connection;
fn main() {
println!("Hello, Home!");
}
谁能帮我解决这个问题?
谢谢!
Chrono has some optional features 您必须启用。
在这种情况下,您需要将 serde
作为可选功能包含在 Cargo.toml
:
chrono
依赖项配置中
chrono = { version = "0.4", features = ["serde"] }