case_clause

Crates.iocase_clause
lib.rscase_clause
version0.1.3
created_at2025-05-23 19:33:41.751217+00
updated_at2025-05-27 07:03:38.512774+00
descriptioncase clause macro for rust
homepagehttps://gitlab.com/rust_projects3505446/case_clause#
repository
max_upload_size
id1686648
size10,401
Guelakais (Guelakais)

documentation

README

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! :)

Commit count: 0

cargo fmt