8
इस कोडक्या किसी प्रकार का 'हैश मैप' बनाना संभव है '* const किसी भी प्रकार'?
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 _
को आकार देने के लिए आकार नहीं दिया जाना चाहिए? इस परीक्षण के लिए, मैं करने की कोशिश की:
use std::any::Any;
use std::mem::size_of;
fn main() {
println!("size_of(*const Any) = {}", size_of::<*const Any>());
}
कौन सा प्रत्याशित ही पैदा करता है:
size_of(*const Any) = 16
FWIW , त्रुटि किसी भी सूचक के लिए एक गुण के लिए होता है। – Shepmaster
मुझे लगता है कि त्रुटि इस तथ्य से आती है कि 'const * const t' के लिए हैश है, लेकिन' टी' को निश्चित रूप से 'आकार' होने की आवश्यकता है, भले ही यह अनावश्यक है। –