我被困在 Rust 书中给出的第一个例子,猜谜游戏。我只是找不到生成数字的gen_range方法thread_rng()。显示的唯一方法是fill_bytes, next_u32,next_u64和try_fill_bytes, 如果我无论如何都尝试编写它,我会收到错误消息,指出该方法不存在。但是,当我尝试使用随机函数时,根据文档thread_rng().gen(),它只是 的快捷方式,它起作用了。我已经尝试了其他功能,更新并重新安装了所有东西,但它仍然不起作用,我真的不知道该怎么做。
欢迎使用堆栈溢出。将来,请尝试在您的问题中添加更多信息,包括相关链接(您在谈论哪个文档)、源代码和错误消息。这将使我们更容易给出相关且有用的答案。
我假设你正在做这样的事情:
use rand::thread_rng;
fn main() {
let x = thread_rng().gen_range(0, 10);
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误:
use rand::thread_rng;
fn main() {
let x = thread_rng().gen_range(0, 10);
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
请注意,Rust 编译器非常擅长为修复代码的方法提供建议。在这种情况下,错误的最后一行建议添加use rand::Rng;,现在它可以工作了:
use rand::Rng;
use rand::thread_rng;
fn main() {
let x = thread_rng().gen_range(0, 10);
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
这是因为该gen_range方法不是直接在ThreadRng结构体上实现的,而是在通用Rng特性中实现的,这使得它自动可用于所有随机数生成器。然而,traits 中的方法只有在 trait 本身可用时才可用,因此需要先导入rand::Rng。