aboutsummaryrefslogtreecommitdiff
path: root/lib/src
diff options
context:
space:
mode:
authorLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-06 16:52:09 +0100
committerLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-06 16:52:09 +0100
commit2cc2a5b3b1823df7d3005e7683c4b4fb04559037 (patch)
treef99a59c65a60a6ddb60876ff234b3c13a3966833 /lib/src
parentf9170c5eebaa5387871e9d4ce4e1c569e30fd569 (diff)
downloadgenerate-random-2cc2a5b3b1823df7d3005e7683c4b4fb04559037.tar.xz
Support HashMap
Diffstat (limited to 'lib/src')
-rw-r--r--lib/src/lib.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/src/lib.rs b/lib/src/lib.rs
index 3b555f2..d0e96e3 100644
--- a/lib/src/lib.rs
+++ b/lib/src/lib.rs
@@ -115,6 +115,19 @@ impl<T: GenerateRandom> GenerateRandom for Vec<T> {
}
}
+impl<K, V> GenerateRandom for std::collections::HashMap<K, V>
+where
+ K: GenerateRandom + std::cmp::Eq + std::hash::Hash,
+ V: GenerateRandom,
+{
+ fn generate_random<R: rand::Rng + ?Sized>(rng: &mut R) -> Self {
+ let len = rng.gen_range(0..8);
+ (0..len)
+ .map(|_| (K::generate_random(rng), V::generate_random(rng)))
+ .collect()
+ }
+}
+
macro_rules! impl_generate_random_tuple {
( $t0:ident $( $t:ident )* ) => {
impl< $t0, $( $t, )* > GenerateRandom for ( $t0, $( $t, )* )