1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use std::collections::{HashMap, HashSet};

/// Whether a value equals its type's default.
pub fn is_default<T: Default + PartialEq>(t: &T) -> bool {
    t == &T::default()
}

/// Whether a vec is empty.
pub fn is_empty_vec<T>(t: &Vec<T>) -> bool {
    t.is_empty()
}

/// Whether a set is empty.
pub fn is_empty_set<T>(t: &HashSet<T>) -> bool {
    t.is_empty()
}

/// Whether a map is empty.
pub fn is_empty_map<K, V>(t: &HashMap<K, V>) -> bool {
    t.is_empty()
}

/// Helper for serializing maps with consistent ordering.
pub fn sort_alphabetically<T: serde::Serialize, S: serde::Serializer>(
    value: &T,
    serializer: S,
) -> Result<S::Ok, S::Error> {
    let value = serde_json::to_value(value).map_err(serde::ser::Error::custom)?;
    serde::Serialize::serialize(&value, serializer)
}