为什么不能用两个i32参数调用gen_range? [英] Why can't I call gen_range with two i32 arguments?

查看:56
本文介绍了为什么不能用两个i32参数调用gen_range?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码,但无法编译:

I have this code but it doesn't compile:

use rand::Rng;
use std::io;

fn main() {
    println!("Guess the number!");

    let secret_number = rand::thread_rng().gen_range(0, 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);
}

编译错误:

error[E0061]: this function takes 1 argument but 2 arguments were supplied
 --> src/main.rs:7:44
  |
7 |     let secret_number = rand::thread_rng().gen_range(0, 101);
  |                                            ^^^^^^^^^ -  --- supplied 2 arguments
  |                                            |
  |                                            expected 1 argument

推荐答案

gen_range 方法需要一个 Range 参数,而不是两个 i32 参数,因此请更改:

The gen_range method expects a single Range argument, not two i32 arguments, so change:

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

收件人:

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

它将编译并运行.注意:方法签名已在 rand 板条箱的 0.8.0 版本中更新,在所有以前的板条箱版本中,您的代码应按原样工作.

And it will compile and work. Note: the method signature was updated in version 0.8.0 of the rand crate, in all prior versions of the crate your code should work as-is.

这篇关于为什么不能用两个i32参数调用gen_range?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆