8
このコード`* const Any`型のものでキーイングされた` HashMap`を作成することは可能ですか?
use std::any::Any;
use std::collections::HashMap;
fn main() {
let x: HashMap<*const Any, i32> = HashMap::new();
}
は私に次のエラー与える:すべての
error: the trait `core::marker::Sized` is not implemented for the type `core::any::Any` [E0277]
let x: HashMap<*const Any, i32> = HashMap::new();
^~~~~~~~~~~~
最初に、それはおよそcore::any::Any
を訴えている理由は、私はキーがタイプ*const core::any::Any
である場合には、理解していません。 *const _
は、それが何を指しているかにかかわらずサイズを決めてはいけませんか?これをテストするには、私が試した:
size_of(*const Any) = 16
FWIW、予想通り、生成
を、エラーは、特性へのポインターで起こります。 – Shepmaster
私はこのエラーは、 'implハッシュfor * const T 'があるという事実から来ていると思いますが、' T'は暗黙的に 'Sized'である必要があります。 –