Есть ли способ освободить привязку до того, как она выйдет из области видимости?
Я пытаюсь проанализировать файл с помощью регулярных выражений:
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
и хотел бы очистить буфер и перейти к следующей строке в файле без дальнейшей обработки. Есть ли хорошее / чистое / элегантное / идиоматическое решение или мне нужно просто прикусить пулю и ввести следующий блок «если»?