function - 为什么我不能用两个 i32 参数调用 gen_range?

标签 function random methods rust numbers

我有这个代码,但它不能编译:

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参数,所以改变:

let secret_number = rand::thread_rng().gen_range(0, 101);
到:
let secret_number = rand::thread_rng().gen_range(0..101);
它会编译并工作。注意:方法签名在版本 0.8.0 中更新的rand crate,在 crate 的所有先前版本中,您的代码应该按原样运行。

关于function - 为什么我不能用两个 i32 参数调用 gen_range?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65431713/

相关文章:

c - 8 个皇后拼图 : using random numbers causes infinite loop

python - 为什么对实例方法的引用存储在每个实例对象中而不是类对象中?

java - java打印数组越界

c - 请告诉我我做错了什么,因为 Monthstr2num 返回的值是错误的

C数组结构函数指针

javascript - 无法在警告框中添加中断

c - 指针未返回正确的值

java - 在 Java 中计算两个数字之间的伤害

c - c中数组中的随机字符串

PHP 父方法覆盖不起作用(使用命名空间)