为了熟悉Rust,我自己编写了一个以BitVec
为后盾的Bloom滤镜.其中的一部分将包括save
方法,该方法使用serde序列化整个 struct 并将其写入文件.不幸的是,我在派生Serialize
特征时遇到编译器错误:
use bitvec::vec::BitVec;
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
pub struct BloomFilter {
n: u64, // items added
m: u32, // slice size
k: u32, // number of slices
buf: BitVec, // buffer
state: [u8; 8], // random state
}
error[E0277]: the trait bound `BitVec: Serialize` is not satisfied
--> src/bloom.rs:12:10
|
12 | #[derive(Serialize, Deserialize)]
| ^^^^^^^^^ the trait `Serialize` is not implemented for `BitVec`
...
17 | buf: BitVec, // buffer
| --- required by a bound introduced by this call
我相关的Cargo.toml
个依赖项:
[dependencies]
bitvec = "1.0.1"
serde = { version = "1.0.196", features = ["derive"] }
这对我来说似乎很奇怪,因为docs for bitvec 1.0.1提到了Serialize
(和Deserialize
)作为实现的特征之一.我是不是犯了什么明显的错误?