Random 如何在结构中存储随机数生成器?

Random 如何在结构中存储随机数生成器?,random,rust,Random,Rust,我试图在结构中存储一个随机数生成器。我似乎无法识别任何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 = d

我试图在结构中存储一个随机数生成器。我似乎无法识别任何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存储在一个结构中,但我不想要trait对象。如何导入ThreadRng的定义?或者XorShiftRng(可能更快-我不需要加密强度)?是我不知道的子模块中的类型吗?我在线阅读的所有示例都调用一个方法来获取Rng并在本地使用它;它们从不将其存储在结构中,也从不定义任何使用结构名称的变量。

如果查看文档,可以单击其返回类型,查看其完全限定名称是否为。

根据文档,类型实际上为。你试过了吗?没有。我错过了那张小纸条。阅读源代码没有给我任何线索。它是有效的!把它贴出来作为回答,我会接受的。花了一个小时尝试各种事情。。。谢谢