Primitive Type bool []

The boolean type.

The bool represents a value, which could only be either true or false.

Basic usage

bool implements various traits, such as BitAnd, BitOr, Not, etc., which allow us to perform boolean operations using &, | and !.

if always demands a bool value. assert!, being an important macro in testing, checks whether an expression returns true.

fn main() { let bool_val = true & false | false; assert!(!bool_val); }
let bool_val = true & false | false;
assert!(!bool_val);

Examples

A trivial example of the usage of bool,

fn main() { let praise_the_borrow_checker = true; // using the `if` conditional if praise_the_borrow_checker { println!("oh, yeah!"); } else { println!("what?!!"); } // ... or, a match pattern match praise_the_borrow_checker { true => println!("keep praising!"), false => println!("you should praise!"), } }
let praise_the_borrow_checker = true;

// using the `if` conditional
if praise_the_borrow_checker {
    println!("oh, yeah!");
} else {
    println!("what?!!");
}

// ... or, a match pattern
match praise_the_borrow_checker {
    true => println!("keep praising!"),
    false => println!("you should praise!"),
}

Also, since bool implements the Copy trait, we don't have to worry about the move semantics (just like the integer and float primitives).

Trait Implementations

impl Not for bool
1.0.0

type Output = bool

The resulting type after applying the ! operator

fn not(self) -> bool

The method for the unary ! operator

impl<'a> Not for &'a bool
1.0.0

type Output = bool::Output

The resulting type after applying the ! operator

fn not(self) -> bool::Output

The method for the unary ! operator

impl BitAnd<bool> for bool
1.0.0

type Output = bool

The resulting type after applying the & operator

fn bitand(self, rhs: bool) -> bool

The method for the & operator

impl<'a> BitAnd<bool> for &'a bool
1.0.0

type Output = bool::Output

The resulting type after applying the & operator

fn bitand(self, other: bool) -> bool::Output

The method for the & operator

impl<'a> BitAnd<&'a bool> for bool
1.0.0

type Output = bool::Output

The resulting type after applying the & operator

fn bitand(self, other: &'a bool) -> bool::Output

The method for the & operator

impl<'a, 'b> BitAnd<&'a bool> for &'b bool
1.0.0

type Output = bool::Output

The resulting type after applying the & operator

fn bitand(self, other: &'a bool) -> bool::Output

The method for the & operator

impl BitOr<bool> for bool
1.0.0

type Output = bool

The resulting type after applying the | operator

fn bitor(self, rhs: bool) -> bool

The method for the | operator

impl<'a> BitOr<bool> for &'a bool
1.0.0

type Output = bool::Output

The resulting type after applying the | operator

fn bitor(self, other: bool) -> bool::Output

The method for the | operator

impl<'a> BitOr<&'a bool> for bool
1.0.0

type Output = bool::Output

The resulting type after applying the | operator

fn bitor(self, other: &'a bool) -> bool::Output

The method for the | operator

impl<'a, 'b> BitOr<&'a bool> for &'b bool
1.0.0

type Output = bool::Output

The resulting type after applying the | operator

fn bitor(self, other: &'a bool) -> bool::Output

The method for the | operator

impl BitXor<bool> for bool
1.0.0

type Output = bool

The resulting type after applying the ^ operator

fn bitxor(self, other: bool) -> bool

The method for the ^ operator

impl<'a> BitXor<bool> for &'a bool
1.0.0

type Output = bool::Output

The resulting type after applying the ^ operator

fn bitxor(self, other: bool) -> bool::Output

The method for the ^ operator

impl<'a> BitXor<&'a bool> for bool
1.0.0

type Output = bool::Output

The resulting type after applying the ^ operator

fn bitxor(self, other: &'a bool) -> bool::Output

The method for the ^ operator

impl<'a, 'b> BitXor<&'a bool> for &'b bool
1.0.0

type Output = bool::Output

The resulting type after applying the ^ operator

fn bitxor(self, other: &'a bool) -> bool::Output

The method for the ^ operator

impl BitAndAssign<bool> for bool
1.8.0

fn bitand_assign(&mut self, other: bool)

The method for the & operator

impl BitOrAssign<bool> for bool
1.8.0

fn bitor_assign(&mut self, other: bool)

The method for the |= operator

impl BitXorAssign<bool> for bool
1.8.0

fn bitxor_assign(&mut self, other: bool)

The method for the ^= operator

impl PartialEq<bool> for bool
1.0.0

fn eq(&self, other: &bool) -> bool

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, other: &bool) -> bool

This method tests for !=.

impl Eq for bool
1.0.0

impl PartialOrd<bool> for bool
1.0.0

fn partial_cmp(&self, other: &bool) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more

fn lt(&self, other: &Rhs) -> bool
1.0.0

This method tests less than (for self and other) and is used by the < operator. Read more

fn le(&self, other: &Rhs) -> bool
1.0.0

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

fn gt(&self, other: &Rhs) -> bool
1.0.0

This method tests greater than (for self and other) and is used by the > operator. Read more

fn ge(&self, other: &Rhs) -> bool
1.0.0

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl Ord for bool
1.0.0

fn cmp(&self, other: &bool) -> Ordering

This method returns an Ordering between self and other. Read more

impl Clone for bool
1.0.0

fn clone(&self) -> bool

Returns a deep copy of the value.

fn clone_from(&mut self, source: &Self)
1.0.0

Performs copy-assignment from source. Read more

impl Default for bool
1.0.0

fn default() -> bool

Returns the "default value" for a type. Read more

impl FromStr for bool
1.0.0

type Err = ParseBoolError

The associated error which can be returned from parsing.

fn from_str(s: &str) -> Result<boolParseBoolError>

Parse a bool from a string.

Yields a Result<bool, ParseBoolError>, because s may or may not actually be parseable.

Examples

fn main() { use std::str::FromStr; assert_eq!(FromStr::from_str("true"), Ok(true)); assert_eq!(FromStr::from_str("false"), Ok(false)); assert!(<bool as FromStr>::from_str("not even a boolean").is_err()); }
use std::str::FromStr;

assert_eq!(FromStr::from_str("true"), Ok(true));
assert_eq!(FromStr::from_str("false"), Ok(false));
assert!(<bool as FromStr>::from_str("not even a boolean").is_err());

Note, in many cases, the .parse() method on str is more proper.

fn main() { assert_eq!("true".parse(), Ok(true)); assert_eq!("false".parse(), Ok(false)); assert!("not even a boolean".parse::<bool>().is_err()); }
assert_eq!("true".parse(), Ok(true));
assert_eq!("false".parse(), Ok(false));
assert!("not even a boolean".parse::<bool>().is_err());

impl Hash for bool
1.0.0

fn hash<H>(&self, state: &mut H) where H: Hasher

Feeds this value into the state given, updating the hasher as necessary.

fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher
1.3.0

Feeds a slice of this type into the state provided.

impl Debug for bool
1.0.0

fn fmt(&self, f: &mut Formatter) -> Result<()Error>

Formats the value using the given formatter.

impl Display for bool
1.0.0

fn fmt(&self, f: &mut Formatter) -> Result<()Error>

Formats the value using the given formatter.