Implementando un take_while “cauteloso” usando Peekable
Me gustaria usarPeekable
como base para un nuevocautious_take_while
operación que actúa comotake_while
deIteratorExt
pero sin consumir el primer artículo fallido. (Hay una pregunta secundaria sobre si esta es una buena idea, y si hay mejores formas de lograr este objetivo en Rust; estaría feliz de tener pistas en esa dirección, pero sobre todo estoy tratando de entender dónde está mi código rotura).
La API que estoy tratando de habilitar es básicamente:
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")
He tomado una grieta encreando un MCVE aquí, pero estoy obteniendo:
: 10: 5: 10:19 error: no se puede mover fuera del contenido prestado: 10 chars.by_ref (). Cautious_take_while (| & x | x! = '.');
Por lo que puedo decir, estoy siguiendo el mismo patrón que el propio RustTakeWhile
en términos de las firmas de mi función, pero veo un comportamiento diferente del verificador de préstamos. ¿Alguien puede señalar lo que estoy haciendo mal?