【发布时间】:2022-01-13 22:08:26
【问题描述】:
当我使用 Rust 的 rand crate 时,如果我想生成一个 rand 数,我会这样写:
use rand::{self, Rng};
let rand = rand::thread_rng().gen::<usize>();
如果我不use rand::Rng,就会出现错误:
在当前范围内没有为结构
rand::prelude::ThreadRng找到名为gen的方法
这与我习惯的完全不同。通常我会这样对待模组:
import rand from "path";
rand.generate();
一旦我导入了这个模组,我就不需要导入其他东西了,我可以使用它导出的每一种方法。
为什么我必须use rand::Rng 才能在rand::thread_rng() 上启用gen 方法?
【问题讨论】:
-
附带说明,通过在 cargo.toml 中包含 rand,编译器会自动将符号
rand引入范围内,因此无需导入它。此外,rand::thread_rng和rand::Rng都包含在 rand 的前奏中,因此推荐使用use rand::prelude::*;将符号纳入范围。