les*_*how 3 random rust rust-obsolete
我可以看到我必须像这样导入:
use std::io::IoResult;
use std::num::{Int, ToPrimitive};
use std::rand::{OsRng, Rng};
Run Code Online (Sandbox Code Playgroud)
然后创建一个新的OsRng实例,并尝试从中生成一个新的u32 int
fn main() {
let mut rng = OsRng::new();
let num:u32 = rng.next_u32();
println!("{}",num);
}
Run Code Online (Sandbox Code Playgroud)
但是我得到的错误类型core::result::Result<std::rand::os::imp::OsRng, std::io::IoError>
没有实现命名范围内的任何方法next_u32
但是铁锈文件清楚地说有一个功能next_u32
?http://doc.rust-lang.org/std/rand/struct.OsRng.html
我错过了什么?
这里你的问题是OsRng::new()
不返回OsRng
实例,而是返回实例IoResult<OsRng>
.因为程序无法获取OS随机数生成器.
示例用法是:
use std::rand::{OsRng, Rng};
fn main() {
let mut rng = match OsRng::new() {
Ok(g) => g,
Err(e) => panic!("Failed to obtain OS RNG: {}", e)
};
let num:u32 = rng.next_u32();
println!("{}",num);
}
Run Code Online (Sandbox Code Playgroud)