hegel/extras/serde_json/
default.rs1use std::collections::HashMap;
2
3use serde_json::{Map, Number, Value};
4
5use crate::generators::{self as gs, BoxedGenerator, DefaultGenerator, Generator};
6
7use super::{NumberGenerator, ValueGenerator, numbers, values};
8
9impl DefaultGenerator for Number {
10 type Generator = NumberGenerator;
11 fn default_generator() -> Self::Generator {
12 numbers()
13 }
14}
15
16impl DefaultGenerator for Value {
17 type Generator = ValueGenerator;
18 fn default_generator() -> Self::Generator {
19 values()
20 }
21}
22
23impl DefaultGenerator for Map<String, Value> {
28 type Generator = BoxedGenerator<'static, Map<String, Value>>;
29 fn default_generator() -> Self::Generator {
30 gs::hashmaps(
31 <String as DefaultGenerator>::default_generator(),
32 <Value as DefaultGenerator>::default_generator(),
33 )
34 .map(|m: HashMap<String, Value>| m.into_iter().collect::<Map<String, Value>>())
35 .boxed()
36 }
37}
38
39#[cfg(feature = "serde_json_raw_value")]
40impl DefaultGenerator for Box<serde_json::value::RawValue> {
41 type Generator = super::RawValueGenerator;
42 fn default_generator() -> Self::Generator {
43 super::raw_values()
44 }
45}