Skip to content

Latest commit

 

History

History
76 lines (55 loc) · 2.19 KB

README.md

File metadata and controls

76 lines (55 loc) · 2.19 KB

Ish

Sometimes you want to compare something to true or false, but you're not so much interested if it's true or false, so much as whether it's true-ish, or false-ish.

Anyway, thanks to Rust's amazing ability to override the hyphen operator, here it is - the Ish library, ported to Rust.

First you need a true-ish or a false-ish value. And you can get that really easily using the hyphen - operator. Once you have one, you can compare it to booleans, strings, and integers:

use ish::ish;

// Any non-zero integer is considered to be true-ish, and not false-ish.
1 == true-ish           // true!
1 == false-ish          // false!
0 == true-ish           // false!
0 == false-ish          // true!

// The word "true" in various different forms is true-ish:
"true" == true-ish      // true!
"TRUE" == true-ish      // true!
"yes" == true-ish       // true!
"👍" == true-ish        // true!
"not true" == true-ish  // false!
"snooker" == true-ish   // false!


// And the word "false" in various different forms is false-ish:
"false" == false-ish    // true!
"FALSE" == false-ish    // true!
"no" == false-ish       // true!
"Norway" == false-ish   // true! - it's an Easter egg 😈
"👎" == false-ish       // true!
"ferrets" == false-ish  // false!

Result::Ok & Option::Some values are considered to be true-ish, while Result::Err & Option::None values are considered to be false-ish.

History

A long time ago I wrote a Python library called ish, and gave a talk about it at EuroPython. People liked it. Well, actually they hated it, but they thought it was funny.

Anyway, I've been writing quite a bit of Rust recently, and it just occurred to me that I could port ish to Rust

To Do

There's more coming.

You won't like it.

Contributions

So far, the code is all my fault.

Many thanks to @[email protected] for suggesting that both "no" and "Norway" should be false-ish.