Как мне явно собрать вектор itertools :: MinMaxResult? - PullRequest
0 голосов
/ 08 февраля 2019

Я использую функцию minmax из ящика itertools:

use itertools::Itertools;

let row_minmax: Vec<MinMaxResult> = input
    .into_par_iter()
    .map(|row| row.iter().minmax())
    .collect::<Vec<MinMaxResult>>();

Я получаю:

error[E0412]: cannot find type `MinMaxResult` in this scope
 --> src/main.rs:4:25
  |
4 |     let row_minmax: Vec<MinMaxResult> = input
  |                         ^^^^^^^^^^^^ not found in this scope
help: possible candidate is found in another module, you can import it into scope
  |
1 | use itertools::MinMaxResult;

Я пытался заменить MinMaxResult на itertools::MinMaxResultи варианты в этой связи, безрезультатно:

error[E0107]: wrong number of type arguments: expected 1, found 0
 --> src/main.rs:4:25
  |
4 |     let row_minmax: Vec<itertools::MinMaxResult> = input
  |                         ^^^^^^^^^^^^^^^^^^^^^^^ expected 1 type argument

Я знаю, что могу использовать Vec<_>, но я очень плохо знаком с Rust, поэтому я предпочитаю явно вводить все (даже если это не идиоматично)) чтобы убедиться, что то, что происходит в моей голове, соотносится с тем, что делает компилятор.Я знаю, что из-за этого код выглядит плохо, но он помогает мне учиться.

1 Ответ

0 голосов
/ 08 февраля 2019

itertools::MinMaxResult - универсальный тип.Вам нужно либо указать параметр типа, либо использовать _, чтобы позволить компилятору определить его.

let row_minmax = input
    .into_par_iter()
    .map(|row| row.iter().minmax())
    .collect::<Vec<MinMaxResult<u32>>>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...