Implementando um take_time “cauteloso” usando o Peekable
Eu gostaria de usarPeekable
como base para uma novacautious_take_while
operação que age comotake_while
deIteratorExt
mas sem consumir o primeiro item com falha. (Há uma questão paralela de saber se essa é uma boa ideia e se há maneiras melhores de atingir esse objetivo no Rust - eu ficaria feliz em sugestões nessa direção, mas principalmente estou tentando entender onde está meu código quebra).
A API que estou tentando ativar é basicamente:
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")
Eu tomei uma rachadura emcriando um MCVE aqui, mas estou recebendo:
: 10: 5: 10:19 erro: não é possível sair do conteúdo emprestado: 10 chars.by_ref (). Cautious_take_ while (| & x | x! = '.');
Até onde eu sei, estou seguindo o mesmo padrão que o próprio RustTakeWhile
em termos de assinaturas de minha função, mas estou vendo um comportamento diferente do verificador de empréstimo. Alguém pode apontar o que estou fazendo de errado?