# 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`

.

let bool_val = true & false | false; assert!(!bool_val);

# Examples

A trivial example of the usage of `bool`

,

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

`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<bool, ParseBoolError>`

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.

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.