7 releases
0.1.13 | Feb 21, 2023 |
---|---|
0.1.12 | Jan 21, 2022 |
0.1.11 | Sep 29, 2021 |
#1008 in Data structures
255 downloads per month
Used in dynamodb-expression
16KB
158 lines
lib.rs
:
Helpers for dealing with Option
s/Result
s of collections or other things
(like String
s) 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
- Adds support for
query_map::QueryMap
- Adds support for
serdejson
- Adds support for
serde_json::Map
- Adds support for
std
- Adds support for types in
std::collections
in addition to types fromalloc
.
- Adds support for types in
Default features:
std
Dependencies
~0–275KB