所以我想用bincode來序列化一個結構跟在這些instructions之後,並且我能夠讓它工作。用當地版本替換板條箱依賴關係時出現的問題
但後來我想用IpAddr
enum序列化一個結構。由於IpAddr
沒有實現所需的特性Encodable
,我從git下載了rustc_serialize包,並自己實現了IpAddr
的可編碼。然後,我改變了我的Cargo.toml
文件:
[dependencies]
# rustc-serialize = "0.3"
byteorder = "0.3"
bincode = "0.4"
[dependencies.rustc-serialize]
path = "src/rustc-serialize-master"
但現在,從我使用的是不編譯結構相同的代碼說 rustc_serialize::serialize::Encodable
不是爲我的結構實現的,即使我有#[derive(RustcEncodable)]
的結構之上。
即使我擺脫了我添加到本地版本的rustc_serialize的代碼,我仍然得到了該錯誤。
我認爲這可能是由於bincode和本地的rustc_serialize交互方式搞砸了某些東西,但我不確定。
對於什麼是值得的,fork'rustc-serialize'爲其他類型添加編碼可能是一個壞主意。對於包含'IpAddr'的結構,手工實現'Encodable'特性可能更爲理智。 – Shepmaster
我試過了,但是我得到了「在當前箱子中定義的唯一特徵可以實現任意類型」的錯誤。對於沒有定義的結構(導入的IpAddr),您似乎無法爲未定義的特徵實現特徵(導入rustc-serialize'可編碼特徵)。 如果你已經能夠做到這一點,請告訴我。謝謝! –
看看[我如何實現我不擁有的特性,我不擁有?](http://stackoverflow.com/q/25413201/155423)。包裝類型在這裏是正確的解決方案。在你的情況下,你已經有了一個包裝類型(*序列化**結構**與IpAddr枚舉*)。無論你的結構是什麼,你都可以手動實現'Encodable'。 – Shepmaster