Rust では、aは脂肪参照&T
であり、実際には に対応します。T
trait
raw::TraitObject
pub struct TraitObject {
pub data: *mut (),
pub vtable: *mut (),
}
を使用すると、余暇に を分解TraitObject
および再構築できます。&T
ただし、 a を分解して を取得するvtable
のは簡単ですが、そもそも を取得せず、 and だけを取得する&T
とどうなるでしょうか。基本的に、次のようなものです。&T
T
S
fn make_vptr<T: ?Sized, S>() -> *mut ();
どうすればそこから v-ptr を推測できますか? 私が使用できる組み込みはありますか?
S
注: を作成して(または空中から呼び出して)参照を作成する単純な実装は&T
機能しません。コンパイラT
は、必ずしも a ではないため、trait
サイズ&T
が 1 つまたは 2 つのポインターであると不平を言います。