gpt4 book ai didi

random - 为什么这个 rand use 语句在 rust 中起作用?

转载 作者:行者123 更新时间:2023-12-03 11:24:43 25 4
gpt4 key购买 nike

遵循 Rust 书中的示例,使用其建议的 rand = "0.6.0" ,我得到如下代码:

use rand::Rng;

fn main() {
let secret_number = rand::thread_rng().gen_range(1, 101);

println!("The secret number is: {}", secret_number);
}
本书后面关于模块的章节中所说的一切都表明,如果你执行 use rand::Rng;如上所述,您将能够使用 Rng .如果这恰好是一个模块本身,您可以使用带有 Rng::submodule 的子模块。 .如果这恰好是一个类型,您只需将其用作 Rng .然而,在上面的代码中,我们从不使用 Rng任何地方。
相反,我们使用看似无关的 rand::thread_rng() .据我了解,自从 rand是顶级 crate 的名称,我们应该可以使用它,即使没有 use似乎没有做任何事情的声明。
相反,由于某种原因,如果没有 use,程序将无法编译。陈述。这真的很令人困惑。我希望这本书能更好地解释那里发生的事情。
为什么我们需要 use 语句?为什么我们不使用 Rng ?它与 rand::thread_rng() 有什么关系? ?
我来自 Python 背景,所以我习惯了如果你导入 threading 的想法。 ,您正在使用 threading.something .如果您导入 django.utils ,您正在使用 django.utils.something .这似乎是 django.utils 的导入您在哪里使用完全不相关的 django.urls .

最佳答案

除非特征在范围内,否则不能调用特征方法。

In the code above however, we never use Rng anywhere.


您正在使用 Rng gen_range() 是由 Rng 特征定义的特征方法,因此 Rng 必须在您调用 gen_range() 的范围内。
细节: rand::thread_rng() 返回 ThreadRng 实现 RngCore 并获得 Rng 实现,因为通用毯子 impl impl<R> Rng for R where R: RngCore + ?Sized

关于random - 为什么这个 rand use 语句在 rust 中起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65812489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com