代码之家  ›  专栏  ›  技术社区  ›  Alana Storm

何时/为什么需要“使用”导入锈菌特性

  •  0
  • Alana Storm  · 技术社区  · 4 年前

    什么时候/为什么需要确定锈菌特性 use d/进口,或者为什么这个问题没有意义?

    我正在努力 The Rust Programming Language --在 chapter 2

    首先,我们添加一个 use rand::Rng . 这个 Rng trait定义随机数生成器实现的方法,以及 . 第10章将详细介绍特征。

    我的。

    我不清楚为什么要这样做

    use std::io;
    use rand::Rng;
    
    fn main() {
        println!("Guess the number!");
    
        let secret_number = rand::thread_rng().gen_range(1, 101);
    
        println!("The secret number is: {}", secret_number);
    
        println!("Please input your guess.");
    
        let mut guess = String::new();
    
        io::stdin()
            .read_line(&mut guess)
            .expect("Failed to read line");
    
        println!("You guessed: {}", guess);
    }
    

    需要 使用rand::Rng . 当我们 use/imported std::io 符号,我们有一个 io

    io::stdin
    

    在我天真(不正确)的观点中,使用 Rng公司 符号。相反,我们得到了一个 rand thread_rng 方法打开。

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

    螺纹\u rng ,我们需要做一些

    use rand;
    // or
    use rand::rand
    

    使用rand::Rng 在我的程序中,为什么这与 use std::io ?

    1 回复  |  直到 4 年前
        1
  •  4
  •   eggyal    4 年前

    rand “symbol”是外部板条箱的名称,它位于根命名空间中,与任何 use 声明。它定义了一个函数 thread_rng() 这也是可用的(通过命名空间限定) rand:: )不管你的 使用

    因此,即使没有use语句,您也可以:

    let thread_rng = rand::thread_rng();
    

    然而, thread_rng rand::rngs::ThreadRng 结构,您正试图调用它 gen_range 是trait方法的函数,在 rand::Rng 使用

    实际上,调用trait方法是可能的,即使没有 使用 声明:

    rand::Rng::gen_range(&mut rand::thread_rng(), 1, 101);
    

    使用 更干净。

    推荐文章