1 use std::fmt; 2 3 use crate::reflect::map::ReflectMapIter; 4 use crate::reflect::map::ReflectMapIterTrait; 5 use crate::reflect::ReflectValueRef; 6 use crate::reflect::RuntimeType; 7 8 #[derive(Clone)] 9 pub(crate) struct DynamicEmptyMap { 10 key_type: RuntimeType, 11 value_type: RuntimeType, 12 } 13 14 impl DynamicEmptyMap { new(key_type: RuntimeType, value_type: RuntimeType) -> DynamicEmptyMap15 pub(crate) fn new(key_type: RuntimeType, value_type: RuntimeType) -> DynamicEmptyMap { 16 Self { 17 key_type, 18 value_type, 19 } 20 } 21 len(&self) -> usize22 pub(crate) fn len(&self) -> usize { 23 0 24 } 25 is_empty(&self) -> bool26 pub(crate) fn is_empty(&self) -> bool { 27 true 28 } 29 get<'a>(&'a self, _key: ReflectValueRef) -> Option<ReflectValueRef<'a>>30 pub(crate) fn get<'a>(&'a self, _key: ReflectValueRef) -> Option<ReflectValueRef<'a>> { 31 None 32 } 33 key_type(&self) -> RuntimeType34 pub(crate) fn key_type(&self) -> RuntimeType { 35 self.key_type.clone() 36 } 37 value_type(&self) -> RuntimeType38 pub(crate) fn value_type(&self) -> RuntimeType { 39 self.value_type.clone() 40 } 41 reflect_iter(&self) -> ReflectMapIter42 pub(crate) fn reflect_iter(&self) -> ReflectMapIter { 43 ReflectMapIter::new(DynamicEmptyMapIter { 44 key_type: self.key_type.clone(), 45 value_type: self.value_type.clone(), 46 }) 47 } 48 } 49 50 impl fmt::Debug for DynamicEmptyMap { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result51 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 52 f.debug_map().finish() 53 } 54 } 55 56 struct DynamicEmptyMapIter { 57 key_type: RuntimeType, 58 value_type: RuntimeType, 59 } 60 61 impl<'a> ReflectMapIterTrait<'a> for DynamicEmptyMapIter { next(&mut self) -> Option<(ReflectValueRef<'a>, ReflectValueRef<'a>)>62 fn next(&mut self) -> Option<(ReflectValueRef<'a>, ReflectValueRef<'a>)> { 63 None 64 } 65 key_type(&self) -> RuntimeType66 fn key_type(&self) -> RuntimeType { 67 self.key_type.clone() 68 } 69 value_type(&self) -> RuntimeType70 fn value_type(&self) -> RuntimeType { 71 self.value_type.clone() 72 } 73 } 74