# Cause Clause Macro
The purpose of the macro implemented here is to create an alternative to huge `if else` cascades.
## Current State:
The Idea is based on haskell [case clauses](https://www.haskell.org/tutorial/patterns.html):
```haskell
| x < 0 = -1
```
This would normally look like this in Rust:
```rust
if x > 0 {
1
} else if x == 0 {
0
} else if x < 0 {
-1
}
```
If you now want to display this using a match case, which is normally the environment in rust for pattern matching, it looks like this:
```rust
match x {
if x > 0 => 1,
if x == 0 => 0,
if x < 0 => -1,
_ => 0,
}
```
I found both solutions extremely clunky and therefore tiring to work with. That's why the macro from this crate works like this:
```rust
case!(
x > 0 => 1,
x == 0 => 0,
x < 0 => -1,
true => 0,
)
```
To be fair, this is a first step towards creating a more elegant alternative to rust's `match` environment, which still works elegantly when processing boolean values.
## Getting Started
If you're in a cargo project, you can add this to your `Cargo.toml`:
```sh
cargo add case_clause
```
Inside your rust project, you can call this macro like so:
```rust
import case_clause::case;
```
# last words
Best regards, my fellow rustaceans! :)