Add one more level of Boxing for Dynamic::Variant to reduce size.
This commit is contained in:
parent
a0bc49c867
commit
1ebdf6dcfc
16
src/any.rs
16
src/any.rs
@ -142,7 +142,7 @@ pub enum Union {
|
|||||||
Float(FLOAT),
|
Float(FLOAT),
|
||||||
Array(Box<Array>),
|
Array(Box<Array>),
|
||||||
Map(Box<Map>),
|
Map(Box<Map>),
|
||||||
Variant(Box<dyn Variant>),
|
Variant(Box<Box<dyn Variant>>),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Dynamic {
|
impl Dynamic {
|
||||||
@ -172,7 +172,7 @@ impl Dynamic {
|
|||||||
Union::Float(_) => TypeId::of::<FLOAT>(),
|
Union::Float(_) => TypeId::of::<FLOAT>(),
|
||||||
Union::Array(_) => TypeId::of::<Array>(),
|
Union::Array(_) => TypeId::of::<Array>(),
|
||||||
Union::Map(_) => TypeId::of::<Map>(),
|
Union::Map(_) => TypeId::of::<Map>(),
|
||||||
Union::Variant(value) => (**value).type_id(),
|
Union::Variant(value) => (***value).type_id(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ impl Dynamic {
|
|||||||
|
|
||||||
#[cfg(not(feature = "no_std"))]
|
#[cfg(not(feature = "no_std"))]
|
||||||
Union::Variant(value) if value.is::<Instant>() => "timestamp",
|
Union::Variant(value) if value.is::<Instant>() => "timestamp",
|
||||||
Union::Variant(value) => (**value).type_name(),
|
Union::Variant(value) => (***value).type_name(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -242,7 +242,7 @@ impl Clone for Dynamic {
|
|||||||
Union::Float(value) => Self(Union::Float(value.clone())),
|
Union::Float(value) => Self(Union::Float(value.clone())),
|
||||||
Union::Array(value) => Self(Union::Array(value.clone())),
|
Union::Array(value) => Self(Union::Array(value.clone())),
|
||||||
Union::Map(value) => Self(Union::Map(value.clone())),
|
Union::Map(value) => Self(Union::Map(value.clone())),
|
||||||
Union::Variant(value) => (**value).clone_into_dynamic(),
|
Union::Variant(value) => (***value).clone_into_dynamic(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -336,7 +336,7 @@ impl Dynamic {
|
|||||||
.map(Box::new)
|
.map(Box::new)
|
||||||
.map(Union::Map)
|
.map(Union::Map)
|
||||||
.or_else(|var| -> Result<Union, ()> {
|
.or_else(|var| -> Result<Union, ()> {
|
||||||
Ok(Union::Variant(var as Box<dyn Variant>))
|
Ok(Union::Variant(Box::new(var as Box<dyn Variant>)))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -380,7 +380,7 @@ impl Dynamic {
|
|||||||
Union::Map(value) => (value.as_ref() as &dyn Variant)
|
Union::Map(value) => (value.as_ref() as &dyn Variant)
|
||||||
.downcast_ref::<T>()
|
.downcast_ref::<T>()
|
||||||
.cloned(),
|
.cloned(),
|
||||||
Union::Variant(value) => value.as_ref().downcast_ref::<T>().cloned(),
|
Union::Variant(value) => value.as_ref().as_ref().downcast_ref::<T>().cloned(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -422,7 +422,7 @@ impl Dynamic {
|
|||||||
Union::Float(value) => (value as &dyn Variant).downcast_ref::<T>(),
|
Union::Float(value) => (value as &dyn Variant).downcast_ref::<T>(),
|
||||||
Union::Array(value) => (value.as_ref() as &dyn Variant).downcast_ref::<T>(),
|
Union::Array(value) => (value.as_ref() as &dyn Variant).downcast_ref::<T>(),
|
||||||
Union::Map(value) => (value.as_ref() as &dyn Variant).downcast_ref::<T>(),
|
Union::Map(value) => (value.as_ref() as &dyn Variant).downcast_ref::<T>(),
|
||||||
Union::Variant(value) => value.as_ref().downcast_ref::<T>(),
|
Union::Variant(value) => value.as_ref().as_ref().downcast_ref::<T>(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -444,7 +444,7 @@ impl Dynamic {
|
|||||||
Union::Float(value) => (value as &mut dyn Variant).downcast_mut::<T>(),
|
Union::Float(value) => (value as &mut dyn Variant).downcast_mut::<T>(),
|
||||||
Union::Array(value) => (value.as_mut() as &mut dyn Variant).downcast_mut::<T>(),
|
Union::Array(value) => (value.as_mut() as &mut dyn Variant).downcast_mut::<T>(),
|
||||||
Union::Map(value) => (value.as_mut() as &mut dyn Variant).downcast_mut::<T>(),
|
Union::Map(value) => (value.as_mut() as &mut dyn Variant).downcast_mut::<T>(),
|
||||||
Union::Variant(value) => value.as_mut().downcast_mut::<T>(),
|
Union::Variant(value) => value.as_mut().as_mut().downcast_mut::<T>(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user