2
P<SomeStruct>
を指定すると、SomeStruct
のフィールドにポインタで直接アクセスすると機能するように見えますが、その理由はわかりません。たとえば、このコードはコンパイルし、期待される(版画「1234」)として機能します。構造体へのポインタのフィールドへのアクセスが錆びているのはなぜですか?
#![feature(rustc_private)]
extern crate syntax;
use syntax::ptr::P;
struct Baz {
id: String,
}
fn foo() {
let mut struct_pointer: P<Baz> = P(Baz {
id: "1234".to_string(),
});
println!("{}", struct_pointer.id);
}
何語の特徴私は結合struct_pointer
にid
フィールドにアクセスすることを可能にするのですか?逆参照?強制?そして、この種のことが、P
のドキュメントを見てもうまくいくと言う方法はありますか?
あなたの例は不完全で再現性がありません。 'P'と' Baz'の定義を含めてください。 –
私は 'P'を' syntax :: ptr :: P'とし、 'Baz'をランダム構造体としますか? 'P'の' Deref'の実装が与えられると、それは逆参照強制でなければなりません。実際は '.to_string'にも同じことが起こります。 – Procrade
@ E_net4、Procradeはそうだ、私はそれが十分に分かりやすいと思った、混乱のために残念。私は例を更新しました。 –