Невозможно использовать регулярное выражение для извлечения слов: нет метода to_string для соответствия - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь перебрать предложение и получить слова с помощью регулярного выражения:

use regex::Regex; // 1.0.6

fn example() {
    let re = Regex::new(r"\w+").unwrap();
    let sample_text = "This is me me.";
    for caps in re.captures_iter(&sample_text) {
        if let Some(cap) = caps.get(0) {
            let word = cap.to_string();
        }
    }
}

Я получаю приведенную ниже ошибку.

error[E0599]: no method named `to_string` found for type `regex::re_unicode::Match<'_>` in the current scope
 --> src/lib.rs:8:28
  |
8 |             let word = cap.to_string();
  |                            ^^^^^^^^^
  |
  = note: the method `to_string` exists but the following trait bounds were not satisfied:
          `regex::re_unicode::Match<'_> : std::string::ToString`

Чего мне не хватает?

1 Ответ

0 голосов
/ 20 декабря 2018

Чтобы получить &str из Match, вы можете использовать это:

let my_str = cap.as_str(); // returns &str

Если вы действительно хотите получить String, вы можете позвонить to_string() на него:

let my_string = my_str.to_string(); // returns String

Также вы можете ознакомиться с документацией Match .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...