optempty 0.1.13

Tools for working types that may be empty. E.g., an empty `String`, `Vec`, `HashMap`, etc.
Documentation
extern crate alloc;

use optempty::IsEmpty;

#[test]
fn binary_heap() {
    let mut bh = alloc::collections::BinaryHeap::default();
    assert!(IsEmpty::is_empty(&bh));

    bh.push("a");
    assert!(!IsEmpty::is_empty(&bh));
}

#[test]
fn btree_map() {
    let mut btm = alloc::collections::BTreeMap::default();
    assert!(IsEmpty::is_empty(&btm));

    btm.insert("a", "b");
    assert!(!IsEmpty::is_empty(&btm));
}

#[test]
fn btree_set() {
    let mut bts = alloc::collections::BTreeSet::default();
    assert!(IsEmpty::is_empty(&bts));

    bts.insert("a");
    assert!(!IsEmpty::is_empty(&bts));
}

#[cfg(feature = "std")]
#[test]
fn hash_map() {
    let mut hm = std::collections::HashMap::default();
    assert!(IsEmpty::is_empty(&hm));

    hm.insert("a", "b");
    assert!(!IsEmpty::is_empty(&hm));
}

#[cfg(feature = "std")]
#[test]
fn hash_set() {
    let mut hs = std::collections::HashSet::default();
    assert!(IsEmpty::is_empty(&hs));

    hs.insert("a");
    assert!(!IsEmpty::is_empty(&hs));
}

#[test]
fn linked_list() {
    let mut ll = alloc::collections::LinkedList::default();
    assert!(IsEmpty::is_empty(&ll));

    ll.push_back("a");
    assert!(!IsEmpty::is_empty(&ll));
}

#[test]
fn vec() {
    let mut v = vec![];
    assert!(IsEmpty::is_empty(&v));

    v.push("a");
    assert!(!IsEmpty::is_empty(&v));
}

#[test]
fn vec_deque() {
    let mut vd = alloc::collections::VecDeque::default();
    assert!(IsEmpty::is_empty(&vd));

    vd.push_back("a");
    assert!(!IsEmpty::is_empty(&vd));
}

#[test]
fn string() {
    assert!(IsEmpty::is_empty(&String::default()));
    assert!(!IsEmpty::is_empty(&String::from("a")));
}

#[test]
fn str() {
    assert!(IsEmpty::is_empty(&""));
    assert!(!IsEmpty::is_empty(&"a"));
}

#[test]
fn slice() {
    assert!(IsEmpty::is_empty(&"".as_bytes()));
    assert!(!IsEmpty::is_empty(&"a".as_bytes()));
}

#[cfg(all(feature = "querymap", feature = "std"))]
#[test]
fn query_map_map() {
    use std::collections::HashMap;

    use query_map::QueryMap;

    let map = QueryMap::default();
    assert!(IsEmpty::is_empty(&map));

    let map = QueryMap::from(HashMap::from([("a".to_string(), vec![1.to_string()])]));
    assert!(!IsEmpty::is_empty(&map));
}

#[cfg(feature = "serdejson")]
#[test]
fn serde_json_map() {
    use serde_json::Map;

    let mut map = Map::default();
    assert!(IsEmpty::is_empty(&map));

    map.insert("a".into(), 1.into());
    assert!(!IsEmpty::is_empty(&map));
}