構造体のスライスをループするとき、値は参考になりますが、多くの場合、var
を(*var)
と書かなければならない場合があります。Rustのリファレンスではなく、スライスの値を反復処理しますか?
変数を再宣言しないようにするより良い方法はありますか?
fn my_fn(slice: &[MyStruct]) {
for var in slice {
let var = *var; // <-- how to avoid this?
// Without the line above, errors in comments occur:
other_fn(var); // <-- expected struct `MyStruct`, found reference
if var != var.other {
// ^^ trait `&MyStruct: std::cmp::PartialEq<MyStruct>>` not satisfied
foo();
}
}
}
参照してください:actual error output(もっと不可解)。
あなたはポインタなしであなたが望むことができるでしょう。 –
いいえ、この場合はありません。一部の操作は機能しますが、十分な操作はありません。 – ideasman42
'var'をそのまま使うのではなく、' let var = * var'を使う必要がある場合の例を挙げることができますか? –