#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

#1008 in Data structures

Download history 252/week @ 2024-07-23 229/week @ 2024-07-30 151/week @ 2024-08-06 340/week @ 2024-08-13 106/week @ 2024-08-20 172/week @ 2024-08-27 114/week @ 2024-09-03 38/week @ 2024-09-10 64/week @ 2024-09-17 80/week @ 2024-09-24 133/week @ 2024-10-01 18/week @ 2024-10-08 35/week @ 2024-10-15 37/week @ 2024-10-22 130/week @ 2024-10-29 41/week @ 2024-11-05

255 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