第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么一個(gè)明顯已經(jīng)實(shí)現(xiàn)的類型沒有實(shí)現(xiàn)一個(gè)特性?

為什么一個(gè)明顯已經(jīng)實(shí)現(xiàn)的類型沒有實(shí)現(xiàn)一個(gè)特性?

holdtom 2019-07-17 18:53:13
為什么一個(gè)明顯已經(jīng)實(shí)現(xiàn)的類型沒有實(shí)現(xiàn)一個(gè)特性?我試著用柴油查詢MySQL數(shù)據(jù)庫(kù)并使用工具欄模板顯示結(jié)果火箭.我把這個(gè)放進(jìn)去了模型#[derive(Queryable, Serialize)]pub struct Post {     pub id: i32,     pub title: String,     pub text: String,     pub published: bool,}cargo run產(chǎn)出如下:  --> src/main.rs:69:5    | 69 |     Template::render("index", &results)    |     ^^^^^^^^^^^^^^^^ the trait `serde::ser::Serialize` is not implemented for `tasty::models::Post`    |    = note: required because of the requirements on the impl of `serde::ser::Serialize` for `std::vec::Vec<tasty::models::Post>`    = note: required by `rocket_contrib::Template::render`在我的箱子里,我有一個(gè):[dependencies]chrono = "0.3.0"rocket = "0.2.8"rocket_codegen = "0.2.8"serde = "1.0.8"serde_derive = "1.0.8"serde_json = "1.0.2"mysql = "11.1.2"diesel = { version = "0.13.0", features = ["mysql","chrono"] }diesel_codegen = { version = "0.13.0", features = ["mysql"] }dotenv = "0.10.0"[dependencies.rocket_contrib]version = "*"default-features = falsefeatures = ["handlebars_templates"]我讀到過迪塞爾不支持Serialize但我不確定。
查看完整描述

1 回答

?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

一般的問題是,代碼有多個(gè)版本的機(jī)箱,每個(gè)版本提供了不同版本的特征。事實(shí)上,Rust允許這是一個(gè)好東西但是它周圍的錯(cuò)誤信息令人困惑。.

你的箱子Serialize但是庫(kù)使用的是B版在公共接口中..這些特性不兼容,所以當(dāng)您傳遞類型時(shí)Serialize@A對(duì)所需的職能Serialize@B編譯器會(huì)阻止您。

雖然您的例子是關(guān)于不同的特性,但這也有可能發(fā)生在類型已經(jīng)從一個(gè)板條箱再出口。

貨物樹對(duì)于驗(yàn)證這是您的問題非常有用。它顯示了所有的依賴項(xiàng)及其版本。它甚至有一個(gè)-d標(biāo)志顯示重復(fù)的依賴關(guān)系!這里沒有顯示這種模式,但是非常有用。

一般的解決方案是手動(dòng)限制Cargo.toml中的Serde版本,以匹配其余的依賴項(xiàng):

serde = "0.9"
serde_derive = "0.9"
serde_json = "0.9"

這可能并不總是可能的,在這種情況下,您可能需要跟蹤機(jī)箱所有者來升級(jí)他們的依賴關(guān)系。


工作實(shí)例

火箭

[dependencies]
chrono = "0.3.0"
rocket = "0.2.8"
rocket_codegen = "0.2.8"
serde = "1.0.8"
serde_derive = "1.0.8"
serde_json = "1.0.2"
mysql = "11.1.2"
diesel = { version = "0.13.0", features = ["mysql","chrono"] }
diesel_codegen = { version = "0.13.0", features = ["mysql"] }
dotenv = "0.10.0"

[dependencies.rocket_contrib]
version = "*"
default-features = false
features = ["handlebars_templates"]

火箭_cont肋骨0.2.8依賴于Serde0.9,但您已經(jīng)使用了Serde1.0。這段經(jīng)刪節(jié)的片段cargo tree顯示問題:

reproduction v0.1.0 (file:///private/tmp/reproduction)
├── rocket_contrib v0.2.8
│   ├── handlebars v0.25.3
│   │   └── serde_json v0.9.10
│   │       └── serde v0.9.15
│   ├── serde v0.9.15 (*)
│   └── serde_json v0.9.10 (*)
├── serde v1.0.8 (*)
├── serde_derive v1.0.8
│   ├── serde_derive_internals v0.15.1
└── serde_json v1.0.2 (*)

這個(gè)即將推出的0.3版火箭應(yīng)該允許使用Serde 1.0。

鐵/BSON/MongoDB

[dependencies]
bodyparser = "0.5"
bson = "0.8"
iron = "0.5"
jwt = "0.4"
mongodb = "0.3"
router = "0.5"
rust-crypto = "0.2"
serde = "1.0"
serde_derive = "1.0"
serde_json = "1.0"
time = "0.1"

車身解析器0.5依賴于Serde 0.8,MongoDB在0.9中,而Cate和BSON則在Serde 1.0中。這段經(jīng)刪節(jié)的片段cargo tree顯示問題:

reproduction v0.1.0 (file:///private/tmp/reproduction)
├── bodyparser v0.5.0
│   ├── serde v0.8.23
│   └── serde_json v0.8.6
│       └── serde v0.8.23 (*)
├── bson v0.8.0
│   ├── serde v1.0.8
│   ├── serde_json v1.0.2
│   │   └── serde v1.0.8 (*)
├── mongodb v0.3.0
│   ├── textnonce v0.6.0
│   │   ├── serde v0.9.15
│   │   └── serde_derive v0.9.15
├── serde v1.0.8 (*)
├── serde_derive v1.0.8
├── serde_json v1.0.2 (*)

Body解析器0.7.0應(yīng)該支持Serde 1.0。這個(gè)文本狀態(tài)不太清楚,但這種依賴性可能是一個(gè),所以在這種情況下可能不重要。

柴油/Chrono

chrono = "0.4.0"diesel = { version = "0.13.0", features = [ "chrono", "sqlite" ] }diesel_codegen = { version = "0.13.0", features = [ "sqlite" ] }dotenv = "0.9.0"

目前的Chrono版本為0.4.0,但DUSIC只知道如何序列化Chrono 0.3.0。

reproduction v0.1.0 (file:///private/tmp/reproduction)
├── chrono v0.4.0
├── diesel v0.13.0
│   ├── chrono v0.3.0

河豚/分組密碼-特性

[dependencies]blowfish = "0.2.1"block-cipher-trait = "0.3.0"
reproduction v0.1.0 (file:///private/tmp/reproduction)
├── block-cipher-trait v0.3.0
│── blowfish v0.2.1
    ├── block-cipher-trait v0.2.0

康羅德/活塞2d-圖形

[dependencies]piston_window = "0.74.0"conrod = { version = "0.56.0", features = ["piston"] }
repro v0.1.0 (file:///private/tmp/repro)
├── conrod v0.56.0
│   ├── piston2d-graphics v0.23.0
└── piston_window v0.74.0
    ├── piston2d-graphics v0.24.0 (*)

Actix/期貨

[dependencies]actix-web = "0.6.10"futures = "0.2.1"
repro v0.1.0 (file:///private/tmp/repro)
├── actix-web v0.6.12
│   ├── actix v0.5.8
│   │   ├── futures v0.1.21
└── futures v0.2.1

光明的未來?

RFC 1977建議引入公眾對(duì)貨物的依賴。如果您使用的板條箱反過來公開了另一個(gè)板條箱的類型,貨將確保您使用一個(gè)單一的統(tǒng)一版本的板條箱與普通類型。


查看完整回答
反對(duì) 回復(fù) 2019-07-17
  • 1 回答
  • 0 關(guān)注
  • 716 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)