私は文字列の先頭に!
または!^num
をスキップするアルゴリズムを実装する:Peekableイテレータを元のイテレータに戻すにはどうすればよいですか?
fn extract_common_part(a: &str) -> Option<&str> {
let mut it = a.chars();
if it.next() != Some('!') {
return None;
}
let mut jt = it.clone().peekable();
if jt.peek() == Some(&'^') {
it.next();
jt.next();
while jt.peek().map_or(false, |v| !v.is_whitespace()) {
it.next();
jt.next();
}
it.next();
}
Some(it.as_str())
}
fn main() {
assert_eq!(extract_common_part("!^4324 1234"), Some("1234"));
assert_eq!(extract_common_part("!1234"), Some("1234"));
}
これは動作しますが、私はChars
へPeekable
から復帰する方法を見つけることができないので、私はit
を進めるために持っているとjt
イテレータ。これにより重複したコードが発生します。
Peekable
イテレータから対応するChars
イテレータに戻すにはどうすればよいでしょうか、またはこのアルゴリズムを実装するための簡単な方法がありますか?
5秒。 "新しい答え"の通知を受け取っていない。 :P –
@DK。さて、私は答えなかった部分を盗んでしまいます。どうすれば作者の免責事項を書く必要がないので、より合法的に見えるでしょう;-) – Shepmaster
**免責事項**:Shepmasterは 'strcursor'の著者から' strcursor'の提案を受けました。それは推奨としてではなく例としてとらえられるべきです。 –