Skip to content

Commit ce7c3a7

Browse files
committed
implement From<[(K, V); N]> for ArrayMapFacade
See #12
1 parent 203dd18 commit ce7c3a7

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

src/array_map.rs

+21-2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ use crate::errors::{CapacityError, RescaleError, UnavailableMutError};
99
use crate::ext::{TryExtend, TryFromIterator};
1010
use crate::iter::{Drain, DrainFilter, Iter, IterMut, Keys, Values, ValuesMut};
1111
use crate::occupied::OccupiedEntry;
12-
use crate::raw::{ArrayTable, RawEntryBuilder, RawTable, RawTableIter};
13-
use crate::utils;
12+
use crate::raw::{ArrayTable, FixedSizeTable, RawEntryBuilder, RawTable, RawTableIter};
1413
use crate::vacant::VacantEntry;
14+
use crate::{unreachable_unchecked, utils};
1515

1616
/// Default hasher for [`ArrayMapFacade`].
1717
#[cfg(feature = "ahash")]
@@ -1056,6 +1056,25 @@ where
10561056
{
10571057
}
10581058

1059+
impl<K, V, R, B, const N: usize> From<[(K, V); N]> for ArrayMapFacade<K, V, R, B>
1060+
where
1061+
K: Eq + Hash,
1062+
R: FixedSizeTable<(K, V), N> + Default,
1063+
B: BuildHasher + Default,
1064+
{
1065+
fn from(value: [(K, V); N]) -> Self {
1066+
let mut result = Self::with_build_hasher(B::default());
1067+
1068+
for (key, value) in value {
1069+
if let Err(error) = result.insert(key, value) {
1070+
unreachable_unchecked!(error);
1071+
}
1072+
}
1073+
1074+
result
1075+
}
1076+
}
1077+
10591078
impl<K, V, R, B> TryFromIterator<(K, V)> for ArrayMapFacade<K, V, R, B>
10601079
where
10611080
K: Eq + Hash,

0 commit comments

Comments
 (0)