Rust Split линии через пробелы: не найден метод сбора для типа & str - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь обработать вывод из командной строки построчно, и я застрял с обработкой str::Lines. Я пытаюсь получить для каждой строки все слова и обработать их (сравнить с некоторым шаблоном)

Мой код:

// output came properly from command
let mut lines = String::from_utf8_lossy(&output.stdout).to_string().lines();

for line in lines {
    let vec: Vec<&str> = line.collect();

    // Try to do something with a split...  

Компилятор жалуется:

error[E0599]: no method named `collect` found for type `&str` in the current scope
   --> src/main.rs:218:39
    |
218 |             let vec: Vec<&str> = line.collect();
    |                                       ^^^^^^^
    |
    = note: the method `collect` exists but the following trait bounds were not satisfied:
            `&mut &str : std::iter::Iterator`
            `&mut str : std::iter::Iterator`

Я думаю, что, возможно, я могу скопировать строку в виде строки и попытаться преобразовать ее, но, поскольку я новичок в Rust, хотел бы получить совет / помощь, как мне сделать линию более плавной?

1 Ответ

0 голосов
/ 26 апреля 2019

Хорошо, я понял, как решить эту проблему, в примере было несколько ошибок:

  1. Мне нужна строка, а не строки из-за времени жизни
  2. Изменчивость здесь не была проблемой, поэтому просто удалили
  3. Для итерации & str мне нужно было извлечь итератор? (не уверен здесь, все же, чувствую себя немного некомфортно с документами Rust ...)
let s = String::from_utf8_lossy(&output.stdout).to_string();

for line in s.lines() {
    let vec: Vec<&str> = line.split(' ').collect();

    // Try to do something with a split... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...