Как создать случайную строку путем выборки из буквенно-цифровых символов? - PullRequest
0 голосов
/ 20 января 2019

Я попытался скомпилировать следующий код:

extern crate rand; // 0.6
use rand::Rng;

fn main() {
    rand::thread_rng()
        .gen_ascii_chars()
        .take(10)
        .collect::<String>();
}

, но cargo build говорит:

warning: unused import: `rand::Rng`
 --> src/main.rs:2:5
  |
2 | use rand::Rng;
  |     ^^^^^^^^^
  |
  = note: #[warn(unused_imports)] on by default

error[E0599]: no method named `gen_ascii_chars` found for type `rand::prelude::ThreadRng` in the current scope
 --> src/main.rs:6:10
  |
6 |         .gen_ascii_chars()
  |          ^^^^^^^^^^^^^^^

Компилятор Rust просит меня удалить предложение use rand::Rng; вв то же время жаловаться, что нет gen_ascii_chars метод.Я бы ожидал, что Rust просто использует черту rand::Rng и не выдаст такие противоречивые сообщения об ошибках.Как я могу пойти дальше отсюда?

1 Ответ

0 голосов
/ 20 января 2019

Как объяснено в rand 0.5.0 docs gen_ascii_chars устарело.

Начиная с 0.6.0, код должен быть:

extern crate rand;

use rand::Rng; 
use rand::distributions::Alphanumeric;

fn main() {
    rand::thread_rng()
        .sample_iter(&Alphanumeric)
        .take(10)
        .collect::<String>(); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...