我正在尝试使用quickcheck crate。
我已经为结构["Lights","Tool Kit","Steering Wheel","Side Mirrors"]
实现了Arbitrary
Point {x: u32, y: u32}
编译器说:
impl Arbitrary for Point {
fn arbitrary<G: Gen>(g: &mut G) -> Point {
let x = g.gen::<u32>();
let y = g.gen::<u32>();
Point { x, y }
}
}
但是我确实在测试模块中有error[E0599]: no method named `gen` found for type `&mut G` in the current scope
--> src/main.rs:61:23
|
61 | let x = g.gen::<u32>();
| ^^^
|
= note: the method `gen` exists but the following trait bounds were not satisfied:
`&mut G : rand::Rng`
`G : rand::Rng`
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope, perhaps add a `use` for it:
`use rand::Rng;`
,并且在我的Cargo.toml中有use rand:Rng;
作为开发依赖项。
我的模块中也有rand
。
要创建任意生成器,我缺少什么?
---编辑- 如果您想为我运行https://gist.github.com/russelldb/49b96ca2e23dfab8a0f03090144735e4,则会重现该问题。
答案 0 :(得分:1)
这似乎是快速检查的问题。 Quickcheck uses rand version 0.6.5,而最新版本为rand is 0.7.0。
由于不同版本的特征不兼容,rustc会出现此错误。
要解决此问题,请在0.6.5版中将rand声明为dependecy,它将起作用。