9 releases
| 0.2.1 | May 22, 2025 |
|---|---|
| 0.2.0 |
|
| 0.1.7 | Apr 10, 2025 |
| 0.1.5 | Jun 2, 2024 |
| 0.1.4 | May 27, 2024 |
#104 in No standard library
611 downloads per month
19KB
449 lines
Similar to the automatic implicit conversion to boolean values in weakly typed languages
| type | impl |
|---|---|
| float | self is not 0.0 / NaN |
| integer | self != 0 |
| reference / smart pointer | inner value impl |
| raw pointer | !self.is_null |
| Option | self.is_some |
| Result | self.is_ok |
| Poll | self.is_ready |
| str / slice / array | !self.is_empty |
| collections | !self.is_empty |
| unit | false |
| bool | self |
| fn / tuple / char | true |
Examples
use weak_true::weak_true;
#[weak_true]
fn main() {
let mut a = vec![-1, 0, 1, 2];
let mut b = vec![4, 3];
while a && a[a.len()-1] {
b.push(a.pop().unwrap());
}
assert_eq!(a, vec![-1, 0]);
assert_eq!(b, vec![4, 3, 2, 1]);
}
use weak_true::WeakTrue;
assert!("c".weak_true());
assert!('c'.weak_true());
assert!('\0'.weak_true());
assert!([0].weak_true());
assert!((&0 as *const i32).weak_true());
assert!(Some(0).weak_true());
assert!(f64::NAN.weak_false());
assert!(0.0.weak_false());
assert!(0.weak_false());
assert!("".weak_false());
assert!([0; 0].weak_false());
assert_eq!(1.weak_then(|| "ok"), Some("ok"));
assert_eq!(0.weak_then(|| "ok"), None);
Dependencies
~77KB