#![deny(missing_docs)]
pub trait BoolUtils {
fn toggle(&mut self);
fn select<T>(self, on_true: T, on_false: T) -> T;
}
impl BoolUtils for bool {
fn toggle(&mut self) {
*self = !*self;
}
fn select<T>(self, on_true: T, on_false: T) -> T {
if self {
on_true
} else {
on_false
}
}
}
#[test]
fn test_toggle() {
let mut flag = true;
flag.toggle();
assert!(!flag);
flag.toggle();
assert!(flag);
}
#[test]
fn test_select() {
let flag = true;
let value = flag.select(10, 20);
assert_eq!(value, 10);
let flag = false;
let value = flag.select(10, 20);
assert_eq!(value, 20);
}