#empty #hash-map #vec #options #collection #serde-json

no-std optempty

Tools for working types that may be empty. E.g., an empty String, Vec, HashMap, etc.

7 releases

0.1.13 Feb 21, 2023
0.1.12 Jan 21, 2022
0.1.11 Sep 29, 2021

#982 in Data structures

Download history 61/week @ 2024-09-18 80/week @ 2024-09-25 122/week @ 2024-10-02 33/week @ 2024-10-09 28/week @ 2024-10-16 71/week @ 2024-10-23 91/week @ 2024-10-30 105/week @ 2024-11-06 209/week @ 2024-11-13 121/week @ 2024-11-20 70/week @ 2024-11-27 150/week @ 2024-12-04 216/week @ 2024-12-11 247/week @ 2024-12-18 121/week @ 2024-12-25 114/week @ 2025-01-01

761 downloads per month
Used in dynamodb-expression

Apache-2.0

16KB
158 lines

Crates.io Docs.rs


lib.rs:

Helpers for dealing with Options/Results of collections or other things (like Strings) that may be empty.

Examples

Always start by including the traits:

use optempty::*;

These examples only show Vec<T>, but they support any type that implements IsEmpty.

empty_into_none

Some with an empty Vec becomes None.

use optempty::*;

let some: Option<Vec<&str>> = Some(vec![]);
let none = some.empty_into_none();
assert_eq!(None, none);

Some with a non-empty Vec remains unchanged.

#
let some = Some(vec!["a", "b", "c"]);
let still_some = some.clone().empty_into_none();
assert_eq!(some, still_some);

None remains unchanged.

#
let none: Option<Vec<&str>> = None;
let still_none = none.empty_into_none();
assert_eq!(None, still_none);

empty_into_err

Ok with an empty Vec becomes Err.

use optempty::*;

let ok: Result<Vec<&str>, &str> = Ok(vec![]);
let err = ok.empty_into_err(|| "was empty");
assert_eq!(Err("was empty"), err);

Ok with a non-empty Vec remains unchanged.

#
let ok = Ok(vec!["a", "b", "c"]);
let still_ok = ok.empty_into_err(|| "was empty");
assert_eq!(Ok(vec!["a", "b", "c"]), still_ok);

Err remains unchanged.

#
let err: Result<Vec<&str>, &str> = Err("failed");
let still_err = err.empty_into_err(|| "was empty");
assert_eq!(Err("failed"), still_err);

See more examples at:

Features

Available features are:

  • querymap
  • serdejson
  • std
    • Adds support for types in std::collections in addition to types from alloc.

Default features:

  • std

Dependencies

~0–275KB