turnip

Crates.ioturnip
lib.rsturnip
version1.1.3
sourcesrc
created_at2024-01-12 23:44:09.150854
updated_at2024-01-16 15:56:13.720826
descriptionTernary operators for Rust
homepagehttps://github.com/admercs/turnip-rs
repositoryhttps://github.com/admercs/turnip-rs
max_upload_size
id1098154
size38,613
Adam Erickson (admercs)

documentation

https://github.com/admercs/turnip-rs

README

turnip-rs

turnip

Ternary operators (turnips) for Rust.

Rather than creating a functional procedural macro to parse yet-another domain-specific syntax (a language within a language), turnip provides the simplest possible solution. The result is recursion without additional function calls and consistency with Rust syntax rules, which does not support overloading the ? and : operators.

The solution is a single 10-line macro defined using macro_rules!. See for yourself. Unlike other solutions out there, such as terny, tern, iffy and ternop, turnip combines simplicity with built-in support for recursion to more closely match a ternary operator design pattern.

What more do you need?

Installation

cargo add turnip

Usage

Create a new crate and add turnip:

cargo init
cargo add turnip

Open src/main.rs and import the ifelse! macro:

// main.rs
use turnip::ifelse;

fn main() {

    let result1: bool = ifelse!(10 < 0, true, false);
    let result2: bool = ifelse!(10 < 0, true, 10 == 0, true, false);
    assert!(result1 == result2);

}

Compile and run the project:

cargo build
cargo run

License

MIT License

Commit count: 0

cargo fmt