この Rust の例を考えると (ここにあります):
struct Dog {
name: ~str
}
fn dogshow() {
let dogs: [~Dog * 3] = [
~Dog { name: ~"Spot" },
~Dog { name: ~"Fido" },
~Dog { name: ~"Snoopy" },
];
// let winner: ~Dog = dogs[1]; // this would be a compile time error.
// can't assign another name to a
// uniquely owned (`~`) pointer.
for dogs.each |dog| { // WTF? `dog` is a second pointer to dogs[x].
// That's not supposed to be allowed by `~` pointers.
// why is this not a compile time error?
println(fmt!("Say hello to %s", dog.name));
}
}
dog
のパラメータはどの型のポインタ.each
ですか?
変数の宣言は、一意に所有されたポインター ( ) が一度に 1 つの名前しか持てないdog
という規則に違反しているようです。~
一意に所有される ( ) ポインターの規則を破ることなく、ループを介してdogs
各犬を変数名に割り当てるにはどうすればよいでしょうか?dog
~
dog
この場合、Rust参照ですか(したがって、別の名前で借用ポインタを表すことができます)? もしそうなら、どうすればわかりますか?Rust 参照は&
構文を使用する必要がありますよね?