/rust/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.12.0/src/arbitrary.rs
Line | Count | Source |
1 | | #[cfg(feature = "arbitrary")] |
2 | | #[cfg_attr(docsrs, doc(cfg(feature = "arbitrary")))] |
3 | | mod impl_arbitrary { |
4 | | use crate::{IndexMap, IndexSet}; |
5 | | use arbitrary::{Arbitrary, Result, Unstructured}; |
6 | | use core::hash::{BuildHasher, Hash}; |
7 | | |
8 | | impl<'a, K, V, S> Arbitrary<'a> for IndexMap<K, V, S> |
9 | | where |
10 | | K: Arbitrary<'a> + Hash + Eq, |
11 | | V: Arbitrary<'a>, |
12 | | S: BuildHasher + Default, |
13 | | { |
14 | 0 | fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self> { |
15 | 0 | u.arbitrary_iter()?.collect() |
16 | 0 | } Unexecuted instantiation: <indexmap::map::IndexMap<naga::arena::handle::Handle<naga::ir::Expression>, alloc::string::String, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as arbitrary::Arbitrary>::arbitrary Unexecuted instantiation: <indexmap::map::IndexMap<naga::arena::handle::Handle<naga::ir::GlobalVariable>, alloc::vec::Vec<alloc::string::String>, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as arbitrary::Arbitrary>::arbitrary Unexecuted instantiation: <indexmap::map::IndexMap<naga::arena::handle::Handle<naga::ir::Type>, alloc::vec::Vec<alloc::string::String>, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as arbitrary::Arbitrary>::arbitrary Unexecuted instantiation: <indexmap::map::IndexMap<naga::arena::handle::Handle<naga::ir::Constant>, alloc::vec::Vec<alloc::string::String>, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as arbitrary::Arbitrary>::arbitrary Unexecuted instantiation: <indexmap::map::IndexMap<naga::arena::handle::Handle<naga::ir::Function>, alloc::vec::Vec<alloc::string::String>, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as arbitrary::Arbitrary>::arbitrary Unexecuted instantiation: <indexmap::map::IndexMap<naga::ir::PredeclaredType, naga::arena::handle::Handle<naga::ir::Type>, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as arbitrary::Arbitrary>::arbitrary Unexecuted instantiation: <indexmap::map::IndexMap<(naga::arena::handle::Handle<naga::ir::Type>, usize), alloc::vec::Vec<alloc::string::String>, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as arbitrary::Arbitrary>::arbitrary Unexecuted instantiation: <indexmap::map::IndexMap<usize, alloc::vec::Vec<alloc::string::String>, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as arbitrary::Arbitrary>::arbitrary |
17 | | |
18 | 0 | fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self> { |
19 | 0 | u.arbitrary_take_rest_iter()?.collect() |
20 | 0 | } |
21 | | } |
22 | | |
23 | | impl<'a, T, S> Arbitrary<'a> for IndexSet<T, S> |
24 | | where |
25 | | T: Arbitrary<'a> + Hash + Eq, |
26 | | S: BuildHasher + Default, |
27 | | { |
28 | | fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self> { |
29 | | u.arbitrary_iter()?.collect() |
30 | | } |
31 | | |
32 | | fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self> { |
33 | | u.arbitrary_take_rest_iter()?.collect() |
34 | | } |
35 | | } |
36 | | } |
37 | | |
38 | | #[cfg(feature = "quickcheck")] |
39 | | #[cfg_attr(docsrs, doc(cfg(feature = "quickcheck")))] |
40 | | mod impl_quickcheck { |
41 | | use crate::{IndexMap, IndexSet}; |
42 | | use alloc::boxed::Box; |
43 | | use alloc::vec::Vec; |
44 | | use core::hash::{BuildHasher, Hash}; |
45 | | use quickcheck::{Arbitrary, Gen}; |
46 | | |
47 | | impl<K, V, S> Arbitrary for IndexMap<K, V, S> |
48 | | where |
49 | | K: Arbitrary + Hash + Eq, |
50 | | V: Arbitrary, |
51 | | S: BuildHasher + Default + Clone + 'static, |
52 | | { |
53 | | fn arbitrary(g: &mut Gen) -> Self { |
54 | | Self::from_iter(Vec::arbitrary(g)) |
55 | | } |
56 | | |
57 | | fn shrink(&self) -> Box<dyn Iterator<Item = Self>> { |
58 | | let vec = Vec::from_iter(self.clone()); |
59 | | Box::new(vec.shrink().map(Self::from_iter)) |
60 | | } |
61 | | } |
62 | | |
63 | | impl<T, S> Arbitrary for IndexSet<T, S> |
64 | | where |
65 | | T: Arbitrary + Hash + Eq, |
66 | | S: BuildHasher + Default + Clone + 'static, |
67 | | { |
68 | | fn arbitrary(g: &mut Gen) -> Self { |
69 | | Self::from_iter(Vec::arbitrary(g)) |
70 | | } |
71 | | |
72 | | fn shrink(&self) -> Box<dyn Iterator<Item = Self>> { |
73 | | let vec = Vec::from_iter(self.clone()); |
74 | | Box::new(vec.shrink().map(Self::from_iter)) |
75 | | } |
76 | | } |
77 | | } |