I have this following rust code:
fn tokenize(line: &str) -> Vec<&str> { let mut tokens = Vec::new(); let mut chars = line.char_indices(); for (i, c) in chars { match c { '"' => { if let Some(pos) = chars.position(|(_, x)| x == '"') { tokens.push(&line[i..=i+pos]); } else { // Not a complete string } } // Other options... } } tokens } I am trying to elegantly extract a string surrounded by double quotes from the line, but since chars.position takes a mutable reference and chars is moved into the for loop, I get a compilation error - "value borrowed after move". The compiler suggests borrowing chars in the for loop but this doesn't work because an immutable reference is not an iterator (and a mutable one would cause the original problem where I can't borrow mutably again for position).
I feel like there should be a simple solution to this. Is there an idiomatic way to do this or do I need to regress to appending characters one by one?