Ответ 1
Вы можете воспроизвести это в Rust 1.0 (и, по крайней мере, до 1.13):
extern crate rand;
fn main() {
rand::thread_rng();
}
С той же ошибкой:
error[E0425]: unresolved name `rand::thread_rng`
--> <anon>:4:5
|
4 | rand::thread_rng();
| ^^^^^^^^^^^^^^^^ unresolved name
Чтобы исправить это, вам нужно добавить ящик rand
на свой Cargo.toml:
[dependencies]
rand = "*"
Это связано с тем, что Rust имеет внутренний скрытый ящик, также называемый rand
. Когда появились гарантии стабильности 1.0, многие из этих, главным образом, внутренних ящиков были выделены в собственные репозитории и размещен на crates.io. Тем не менее, компилятор все еще нуждался в части этих ящиков, и поэтому их заглушки остались в компиляторе, но были закрыты.
Можно ли использовать другой rng?
Умная идея, которая, кажется, работает! Для будущих людей этот только применяется к ночным сборкам, и это означает, что вы принимаете любой код, который может произойти!
#![feature(rand)]
extern crate rand;
use rand::Rng;
fn main() {
let mut rng = rand::IsaacRng::new_unseeded();
println!("{}", rng.gen_range(0, 10));
}
Самый большой недостаток заключается в том, что каждый запуск программы будет иметь одинаковую последовательность чисел, потому что у нее всегда будет одно и то же семя. Это может быть полезно для бенчмаркинга!