4 releases
Uses new Rust 2024
| 0.1.3 | May 27, 2025 |
|---|---|
| 0.1.2 | May 26, 2025 |
| 0.1.1 | May 23, 2025 |
| 0.1.0 | May 23, 2025 |
#860 in Text processing
Used in 2 crates
7KB
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:
sign x | x > 0 = 1
| x == 0 = 0
| x < 0 = -1
This would normally look like this in 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:
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:
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:
cargo add case_clause
Inside your rust project, you can call this macro like so:
import case_clause::case;
last words
Best regards, my fellow rustaceans! :)