Speed up Array/Map Dynamic construction.

This commit is contained in:
Stephen Chung
2021-04-20 22:21:51 +08:00
parent 8ff1f57900
commit 61d06183ea
2 changed files with 19 additions and 7 deletions

View File

@@ -1721,6 +1721,14 @@ impl From<&crate::Identifier> for Dynamic {
}
}
#[cfg(not(feature = "no_index"))]
impl Dynamic {
/// Create a [`Dynamc`] from an [`Array`].
#[inline(always)]
pub(crate) fn from_array(array: Array) -> Self {
Self(Union::Array(Box::new(array), AccessMode::ReadWrite))
}
}
#[cfg(not(feature = "no_index"))]
impl<T: Variant + Clone> From<Vec<T>> for Dynamic {
#[inline(always)]
fn from(value: Vec<T>) -> Self {
@@ -1751,6 +1759,14 @@ impl<T: Variant + Clone> std::iter::FromIterator<T> for Dynamic {
}
}
#[cfg(not(feature = "no_object"))]
impl Dynamic {
/// Create a [`Dynamc`] from a [`Map`].
#[inline(always)]
pub(crate) fn from_map(map: Map) -> Self {
Self(Union::Map(Box::new(map), AccessMode::ReadWrite))
}
}
#[cfg(not(feature = "no_object"))]
#[cfg(not(feature = "no_std"))]
impl<K: Into<crate::Identifier>, T: Variant + Clone> From<std::collections::HashMap<K, T>>
for Dynamic