Crate optempty

Source
Expand description

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

Re-exports§

pub use empty_into_err::EmptyIntoErr;
pub use empty_into_none::EmptyIntoNone;
pub use is_empty::IsEmpty;

Modules§

empty_into_err
empty_into_none
is_empty