Implementieren einer "vorsichtigen" Einstellung_unter Verwendung von Peekable

Ich würde gerne @ verwendPeekable als Basis für ein neuescautious_take_while Operation, die sich wie @ verhätake_while vonIteratorExt aber ohne den ersten fehlgeschlagenen Gegenstand zu verbrauchen. (Es gibt eine Nebenfrage, ob dies eine gute Idee ist und ob es bessere Möglichkeiten gibt, dieses Ziel in Rust zu erreichen. Ich würde mich über Hinweise in diese Richtung freuen, aber meistens versuche ich zu verstehen, wo sich mein Code befindet brechen).

Die API, die ich aktivieren möchte, lautet im Grunde:

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")

Ich habe einen Sprung bei @ genomm MCVE hier erstellen, aber ich bekomme:

: 10: 5: 10:19 Fehler: Ausgeliehener Inhalt kann nicht entfernt werden: 10 Zeichen.by_ref (). Cautious_take_while (| & x | x! = '.');

Soweit ich das beurteilen kann, verfolge ich das gleiche Muster wie Rusts eigenesTakeWhile in Bezug auf meine Funktionssignaturen, aber ich sehe ein anderes Verhalten als die Ausleihprüfung. Kann jemand darauf hinweisen, was ich falsch mache?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage