switch_statement 1.0.0

A simple switch statement macro
Documentation
# Switch Statement For Rust

*A simple macro to emulate a `switch` statement in Rust.*

[![crates.io](https://img.shields.io/crates/v/switch_statement.svg)](https://crates.io/crates/switch_statement)
[![Docs](https://docs.rs/switch_statement/badge.svg)](https://docs.rs/switch_statement/)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

## Description

The `switch!` macro looks similar to `match`. But instead of pattern matching,
each left-hand-side expression is interpreted as an expression instead of a
pattern. One use case for this is to match against constants joined with
bitwise OR. The output of the macro is a `match` with `if` guards.

## Example

```rust
const A: u32 = 1 << 0;
const B: u32 = 1 << 1;
const C: u32 = 1 << 2;

fn flag_string(input: u32) -> &'static str {
    switch! { input;
        A => "A",
        // bitwise OR
        A | B => "A and B",
        A | B | C => "A and B and C",
        B | C => "B and C",
        _ => "other"
    }
}
```

The above code expands to:

```rust
const A: u32 = 1 << 0;
const B: u32 = 1 << 1;
const C: u32 = 1 << 2;

fn flag_string(input: u32) -> &'static str {
    match input {
        v if v == A => "A",
        v if v == A | B => "A and B",
        v if v == A | B | C => "A and B and C",
        v if v == B | C => "B and C",
        _ => "other"
    }
}
```