Есть ли способ освободить привязку до того, как она выйдет из области видимости?

Я пытаюсь проанализировать файл с помощью регулярных выражений:

extern crate regex; // 1.0.1

use regex::Regex;

fn example(
    section_header_pattern: Regex,
    section_name: &str,
    mut line: String,
    mut is_in_right_section: bool,
) {
    loop {
        if let Some(m) = section_header_pattern
            .captures(&line)
            .and_then(|c| c.get(1))
        {
            is_in_right_section = m.as_str().eq(section_name);
            line.clear();
            continue;
        }
    }
}

fn main() {}

... но компилятор жалуется, потому чтоRegEx«scaptures() Метод имеет заимствование, которое длится в течение жизни матча:

error[E0502]: cannot borrow `line` as mutable because it is also borrowed as immutable
  --> src/main.rs:17:13
   |
13 |             .captures(&line)
   |                        ---- immutable borrow occurs here
...
17 |             line.clear();
   |             ^^^^ mutable borrow occurs here
18 |             continue;
19 |         }
   |         - immutable borrow ends here

Когда я доберусь доline.clear();Я сделал сMatch и хотел бы очистить буфер и перейти к следующей строке в файле без дальнейшей обработки. Есть ли хорошее / чистое / элегантное / идиоматическое решение или мне нужно просто прикусить пулю и ввести следующий блок «если»?

Ответы на вопрос(1)

Ваш ответ на вопрос