我正在尝试将一个随机数生成器存储在一个结构体中。但似乎无法识别任何Rng结构体的结构定义,例如ThreadRng。以下代码可以正常工作:
use rand::{
self,
distributions::{Distribution, Uniform},
}; // 0.6.4
fn main() {
let mut rng = rand::thread_rng();
let die_range = Uniform::new_inclusive(1, 6);
let die = die_range.sample(&mut rng);
println!("{}", die);
}
然而,如果我尝试定义一个变量来具有Rng的实际类型,我会遇到错误:
use rand::{
self,
ThreadRng,
distributions::{Distribution, Uniform},
}; // 0.6.4
fn main() {
let mut rng :ThreadRng = rand::thread_rng();
let die_range = Uniform::new_inclusive(1, 6);
let die = die_range.sample(&mut rng);
println!("{}", die);
}
错误信息为:
error[E0432]: unresolved import `rand::ThreadRng`
--> src/main.rs:3:5
|
3 | ThreadRng,
| ^^^^^^^^^
| |
| no `ThreadRng` in the root
| help: a similar name exists in the module: `thread_rng`
我希望能在一个结构体中存储Rng,但不想使用特质对象。如何导入ThreadRng的定义?或者XorShiftRng(可能更快-我不需要加密强度)?类型是否在某个我不知道的子模块中?所有我在线上读到的示例都调用方法获取Rng并在本地使用它;他们从未将其存储在结构体中,也从未定义使用结构体名称的变量。
rand::rngs::ThreadRng
。你试过了吗? - mcarton