Rustチュートリアルの「12 Dereferencing pointers」からの次のコードスニペットの意味を理解したいです:
let point = &@~Point { x: 10f, y: 20f };
println(fmt!("%f", point.x));
特に @~ はどういう意味ですか?
Rustチュートリアルの「12 Dereferencing pointers」からの次のコードスニペットの意味を理解したいです:
let point = &@~Point { x: 10f, y: 20f };
println(fmt!("%f", point.x));
特に @~ はどういう意味ですか?
これは単純に、複数のポインタ取得演算子を適用したものです。中かっこを付けて、より明確に表示することができます (ただし、有効な Rust コードかどうかはわかりません)。
&(@(~Point { x: 10f, y: 20f }))
これは実際には、構造体への一意のポインターを含むマネージド ボックスへの借用ポインターです。
もちろん、そのようなことは実際のコードでは役に立ちませんが、逆参照の概念を示しています。
式は、Point への所有ポインターへのマネージ ポインターへの参照です。
上記の文は良いヒントを与えてくれます:
任意の数のポインターを自動的に逆参照する式を作成できます。たとえば、気が向いたら、次のようなばかげたものを書くことができます
何かへのポインタへのポインタを持つことができることを示すだけです。このコードは、このスニペットが概念をうまく利用していないという点で、確かにばかげています。単に構文を見せびらかすだけです。
ポインターへのポインターの詳細については、次の質問をお楽しみください:ポインターへのポインターは C でどのように機能しますか?