Реализация «осторожного» take_ while с использованием Peekable

Я хотел бы использоватьPeekable как основа для новогоcautious_take_while операция, которая действует какtake_while отIteratorExt но не потребляя первый неисправный предмет. (Есть дополнительный вопрос о том, является ли это хорошей идеей, и есть ли лучшие способы достичь этой цели в Rust - я был бы рад за подсказки в этом направлении, но в основном я пытаюсь понять, где мой код ломки).

API, который я пытаюсь включить, в основном:

let mut chars = "abcdefg.".chars().peekable();

let abc : String = chars.by_ref().cautious_take_while(|&x| x != 'd');
let defg : String = chars.by_ref().cautious_take_while(|&x| x != '.');

// yielding (abc = "abc", defg = "defg")

Я взломалсоздавая MCVE здесь, но я получаю:

: 10: 5: 10:19 ошибка: невозможно удалить из заимствованного содержимого: 10 chars.by_ref (). Cautious_take_ while (| & x | x! = '.');

Насколько я могу судить, я следую той же схеме, что и у Руста.TakeWhile с точки зрения сигнатур моей функции, но я вижу другое поведение, отличное от проверки заимствования. Может кто-то указать, что я делаю не так?

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

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