IfEmpty

CI Status

A crate to use for defensive programming where context specific defaults are needed.

Motivation

While using an Option is preferrably in most circumstances there are situations where a function call doesn't return a Option and the Default of a type isn't helpful either.

You now have the option to wrap this special function call or write something along these lines:

rust let foo = { let b = bar(); if b.is_empty() { Bar { // set the default values for your context here } } else { b } };

Using this crate you can reduce this down to:

rust let foo = bar().if_empty(Bar { /* ... */ });

Implementing this for your own type

In order to take advantage of this feature you have to implement this behavior for your types:

```rust

use if_empty::*;

struct Foo { val: bool, }

impl IfEmpty for Foo { fn ifempty(self, value: Foo) -> Foo { if self.isempty() { value } else { self } } }

```

Once #1 is implemented you can simply use derive.

Provided types

The crate provides this functionality for String and &str.