4
このコード:パターンガードで使用すると、それはなぜ借りるのですか?
fn t(r: &[u8]) {
match r {
_ if r.iter().any(|&x| x == b';') => {}
_ => {}
}
}
は私にエラーを与える:
error[E0301]: cannot mutably borrow in a pattern guard
|
10 | _ if r.iter().any(|&x| x == b';') => {}
| ^^^^^^^^ borrowed mutably in pattern guard
私は試合のパターンでmutably借りることができないことを理解し、なぜコンパイラはr.iter()
がmutably借りていることを考えるのですか?変更可能な方法で借りる別の方法iter_mut
があります。
&[u8]
に別の機能を導入せずにb';'
が含まれていることを確認するにはどうすればよいですか? mutably借りないiter
が、iter
の結果はmutably借りている -
それはイテレータのための意味を成しています::任意の可変参照することによって自己を取りますか? – user12341234
@ user12341234はい、そうです。 'next'を呼び出すためにイテレータを変更することができなければなりません。イテレータは、イテレータの内部状態を更新し、各呼び出しごとに異なるものを返すことができます。 – Shepmaster