Primitive Type bool

1.0.0 ·
Expand description

布尔类型。

bool 代表一个值,它只能是 truefalse。 如果将 bool 转换为整数,则 true 将为 1,false 将为 0.

基本用法

bool 实现了各种 traits,例如 BitAndBitOrNot 等,允许我们使用 &|! 执行布尔运算。

if 需要一个 bool 值作为它的条件。 assert! 是测试中的一个重要宏,检查表达式是否为 true,如果不是则为 panics。

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

Examples

bool 用法的一个简单示例:

let praise_the_borrow_checker = true;

// 使用 `if` 有条件
if praise_the_borrow_checker {
    println!("oh, yeah!");
} else {
    println!("what?!!");
}

// ... 或者,匹配模式
match praise_the_borrow_checker {
    true => println!("keep praising!"),
    false => println!("you should praise!"),
}
Run

另外,由于 bool 实现了 Copy trait,因此我们不必担心移动语义 (就像整数和浮点图元一样)。

现在将 bool 强制转换为整数类型的示例:

assert_eq!(true as i32, 1);
assert_eq!(false as i32, 0);
Run

Implementations§

source§

impl bool

1.62.0 · source

pub fn then_some<T>(self, t: T) -> Option<T>

如果 booltrue,则返回 Some(t),否则返回 None

传递给 then_some 的参数被热切地评估; 如果要传递函数调用的结果,建议使用 then,它是惰性求值的。

Examples
assert_eq!(false.then_some(0), None);
assert_eq!(true.then_some(0), Some(0));
Run
let mut a = 0;
let mut function_with_side_effects = || { a += 1; };

true.then_some(function_with_side_effects());
false.then_some(function_with_side_effects());

// `a` 增加了两次,因为传递给 `then_some` 的值被急切地评估。
assert_eq!(a, 2);
Run
1.50.0 · source

pub fn then<T, F: FnOnce() -> T>(self, f: F) -> Option<T>

如果 booltrue,则返回 Some(f()),否则返回 None

Examples
assert_eq!(false.then(|| 0), None);
assert_eq!(true.then(|| 0), Some(0));
Run
let mut a = 0;

true.then(|| { a += 1; });
false.then(|| { a += 1; });

// `a` 增加一次,因为闭包被 `then` 懒惰地评估。
assert_eq!(a, 1);
Run

Trait Implementations§

source§

impl BitAnd<&bool> for &bool

§

type Output = <bool as BitAnd<bool>>::Output

应用 & 运算符后的结果类型。
source§

fn bitand(self, other: &bool) -> <bool as BitAnd<bool>>::Output

执行 & 操作。 Read more
source§

impl BitAnd<&bool> for bool

§

type Output = <bool as BitAnd<bool>>::Output

应用 & 运算符后的结果类型。
source§

fn bitand(self, other: &bool) -> <bool as BitAnd<bool>>::Output

执行 & 操作。 Read more
source§

impl<T, const LANES: usize> BitAnd<Mask<T, LANES>> for boolwhere T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

§

type Output = Mask<T, LANES>

应用 & 运算符后的结果类型。
source§

fn bitand(self, rhs: Mask<T, LANES>) -> Mask<T, LANES>

执行 & 操作。 Read more
source§

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

§

type Output = <bool as BitAnd<bool>>::Output

应用 & 运算符后的结果类型。
source§

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

执行 & 操作。 Read more
source§

impl<T, const LANES: usize> BitAnd<bool> for Mask<T, LANES>where T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

§

type Output = Mask<T, LANES>

应用 & 运算符后的结果类型。
source§

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

执行 & 操作。 Read more
source§

impl BitAnd<bool> for bool

§

type Output = bool

应用 & 运算符后的结果类型。
source§

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

执行 & 操作。 Read more
1.22.0 · source§

impl BitAndAssign<&bool> for bool

source§

fn bitand_assign(&mut self, other: &bool)

执行 &= 操作。 Read more
source§

impl<T, const LANES: usize> BitAndAssign<bool> for Mask<T, LANES>where T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

source§

fn bitand_assign(&mut self, rhs: bool)

执行 &= 操作。 Read more
1.8.0 · source§

impl BitAndAssign<bool> for bool

source§

fn bitand_assign(&mut self, other: bool)

执行 &= 操作。 Read more
source§

impl BitOr<&bool> for &bool

§

type Output = <bool as BitOr<bool>>::Output

应用 | 运算符后的结果类型。
source§

fn bitor(self, other: &bool) -> <bool as BitOr<bool>>::Output

执行 | 操作。 Read more
source§

impl BitOr<&bool> for bool

§

type Output = <bool as BitOr<bool>>::Output

应用 | 运算符后的结果类型。
source§

fn bitor(self, other: &bool) -> <bool as BitOr<bool>>::Output

执行 | 操作。 Read more
source§

impl<T, const LANES: usize> BitOr<Mask<T, LANES>> for boolwhere T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

§

type Output = Mask<T, LANES>

应用 | 运算符后的结果类型。
source§

fn bitor(self, rhs: Mask<T, LANES>) -> Mask<T, LANES>

执行 | 操作。 Read more
source§

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

§

type Output = <bool as BitOr<bool>>::Output

应用 | 运算符后的结果类型。
source§

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

执行 | 操作。 Read more
source§

impl<T, const LANES: usize> BitOr<bool> for Mask<T, LANES>where T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

§

type Output = Mask<T, LANES>

应用 | 运算符后的结果类型。
source§

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

执行 | 操作。 Read more
source§

impl BitOr<bool> for bool

§

type Output = bool

应用 | 运算符后的结果类型。
source§

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

执行 | 操作。 Read more
1.22.0 · source§

impl BitOrAssign<&bool> for bool

source§

fn bitor_assign(&mut self, other: &bool)

执行 |= 操作。 Read more
source§

impl<T, const LANES: usize> BitOrAssign<bool> for Mask<T, LANES>where T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

source§

fn bitor_assign(&mut self, rhs: bool)

执行 |= 操作。 Read more
1.8.0 · source§

impl BitOrAssign<bool> for bool

source§

fn bitor_assign(&mut self, other: bool)

执行 |= 操作。 Read more
source§

impl BitXor<&bool> for &bool

§

type Output = <bool as BitXor<bool>>::Output

应用 ^ 运算符后的结果类型。
source§

fn bitxor(self, other: &bool) -> <bool as BitXor<bool>>::Output

执行 ^ 操作。 Read more
source§

impl BitXor<&bool> for bool

§

type Output = <bool as BitXor<bool>>::Output

应用 ^ 运算符后的结果类型。
source§

fn bitxor(self, other: &bool) -> <bool as BitXor<bool>>::Output

执行 ^ 操作。 Read more
source§

impl<T, const LANES: usize> BitXor<Mask<T, LANES>> for boolwhere T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

§

type Output = Mask<T, LANES>

应用 ^ 运算符后的结果类型。
source§

fn bitxor(self, rhs: Mask<T, LANES>) -> Self::Output

执行 ^ 操作。 Read more
source§

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

§

type Output = <bool as BitXor<bool>>::Output

应用 ^ 运算符后的结果类型。
source§

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

执行 ^ 操作。 Read more
source§

impl<T, const LANES: usize> BitXor<bool> for Mask<T, LANES>where T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

§

type Output = Mask<T, LANES>

应用 ^ 运算符后的结果类型。
source§

fn bitxor(self, rhs: bool) -> Self::Output

执行 ^ 操作。 Read more
source§

impl BitXor<bool> for bool

§

type Output = bool

应用 ^ 运算符后的结果类型。
source§

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

执行 ^ 操作。 Read more
1.22.0 · source§

impl BitXorAssign<&bool> for bool

source§

fn bitxor_assign(&mut self, other: &bool)

执行 ^= 操作。 Read more
source§

impl<T, const LANES: usize> BitXorAssign<bool> for Mask<T, LANES>where T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

source§

fn bitxor_assign(&mut self, rhs: bool)

执行 ^= 操作。 Read more
1.8.0 · source§

impl BitXorAssign<bool> for bool

source§

fn bitxor_assign(&mut self, other: bool)

执行 ^= 操作。 Read more
source§

impl Clone for bool

source§

fn clone(&self) -> Self

返回值的副本。 Read more
source§

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

source 执行复制分配。 Read more
source§

impl Debug for bool

source§

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

使用给定的格式化程序格式化该值。 Read more
source§

impl Default for bool

source§

fn default() -> bool

Returns the default value of false

source§

impl Display for bool

source§

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

使用给定的格式化程序格式化该值。 Read more
1.24.0 · source§

impl From<bool> for AtomicBool

source§

fn from(b: bool) -> Self

bool 转换为 AtomicBool

Examples
use std::sync::atomic::AtomicBool;
let atomic_bool = AtomicBool::from(true);
assert_eq!(format!("{atomic_bool:?}"), "true")
Run
1.68.0 · source§

impl From<bool> for f32

source§

fn from(small: bool) -> Self

无损地将 bool 转换为 f32false 的结果值为正 0.0true 值为 1.0

Examples
let x: f32 = false.into();
assert_eq!(x, 0.0);
assert!(x.is_sign_positive());

let y: f32 = true.into();
assert_eq!(y, 1.0);
Run
1.68.0 · source§

impl From<bool> for f64

source§

fn from(small: bool) -> Self

无损地将 bool 转换为 f64false 的结果值为正 0.0true 值为 1.0

Examples
let x: f64 = false.into();
assert_eq!(x, 0.0);
assert!(x.is_sign_positive());

let y: f64 = true.into();
assert_eq!(y, 1.0);
Run
1.28.0 · source§

impl From<bool> for i128

source§

fn from(small: bool) -> Self

Converts a bool to a i128. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(i128::from(true), 1);
assert_eq!(i128::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for i16

source§

fn from(small: bool) -> Self

Converts a bool to a i16. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(i16::from(true), 1);
assert_eq!(i16::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for i32

source§

fn from(small: bool) -> Self

Converts a bool to a i32. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(i32::from(true), 1);
assert_eq!(i32::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for i64

source§

fn from(small: bool) -> Self

Converts a bool to a i64. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(i64::from(true), 1);
assert_eq!(i64::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for i8

source§

fn from(small: bool) -> Self

Converts a bool to a i8. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(i8::from(true), 1);
assert_eq!(i8::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for isize

source§

fn from(small: bool) -> Self

Converts a bool to a isize. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(isize::from(true), 1);
assert_eq!(isize::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for u128

source§

fn from(small: bool) -> Self

Converts a bool to a u128. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(u128::from(true), 1);
assert_eq!(u128::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for u16

source§

fn from(small: bool) -> Self

Converts a bool to a u16. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(u16::from(true), 1);
assert_eq!(u16::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for u32

source§

fn from(small: bool) -> Self

Converts a bool to a u32. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(u32::from(true), 1);
assert_eq!(u32::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for u64

source§

fn from(small: bool) -> Self

Converts a bool to a u64. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(u64::from(true), 1);
assert_eq!(u64::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for u8

source§

fn from(small: bool) -> Self

Converts a bool to a u8. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(u8::from(true), 1);
assert_eq!(u8::from(false), 0);
Run
1.28.0 · source§

impl From<bool> for usize

source§

fn from(small: bool) -> Self

Converts a bool to a usize. The resulting value is 0 for false and 1 for true values.

Examples
assert_eq!(usize::from(true), 1);
assert_eq!(usize::from(false), 0);
Run
source§

impl FromStr for bool

source§

fn from_str(s: &str) -> Result<bool, ParseBoolError>

从字符串中解析 bool

唯一可接受的值是 "true""false"。 任何其他输入都将返回错误。

Examples
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());
Run

注意,在许多情况下,str 上的 .parse() 方法更合适。

assert_eq!("true".parse(), Ok(true));
assert_eq!("false".parse(), Ok(false));
assert!("not even a boolean".parse::<bool>().is_err());
Run
§

type Err = ParseBoolError

可以从解析中返回的相关错误。
source§

impl Hash for bool

source§

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

将该值输入给定的 HasherRead more
1.3.0 · source§

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

将这种类型的切片送入给定的 Hasher 中。 Read more
source§

impl Not for &bool

§

type Output = <bool as Not>::Output

应用 ! 运算符后的结果类型。
source§

fn not(self) -> <bool as Not>::Output

执行一元 ! 操作。 Read more
source§

impl Not for bool

§

type Output = bool

应用 ! 运算符后的结果类型。
source§

fn not(self) -> bool

执行一元 ! 操作。 Read more
source§

impl Ord for bool

source§

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

此方法返回 selfother 之间的 OrderingRead more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere Self: Sized,

比较并返回两个值中的最大值。 Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere Self: Sized,

比较并返回两个值中的最小值。 Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere Self: Sized + PartialOrd,

将值限制在某个时间间隔内。 Read more
source§

impl PartialEq<bool> for bool

source§

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

此方法测试 selfother 值是否相等,并由 == 使用。
source§

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

此方法测试 !=。 默认实现几乎总是足够的,并且不应在没有充分理由的情况下被覆盖。
source§

impl PartialOrd<bool> for bool

source§

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

如果存在,则此方法返回 selfother 值之间的顺序。 Read more
source§

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

此方法测试的内容少于 (对于 selfother),并且由 < 操作员使用。 Read more
source§

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

此方法测试小于或等于 (对于 selfother),并且由 <= 运算符使用。 Read more
source§

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

此方法测试大于 (对于 selfother),并且由 > 操作员使用。 Read more
source§

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

此方法测试是否大于或等于 (对于 selfother),并且由 >= 运算符使用。 Read more
source§

impl ConstParamTy for bool

source§

impl Copy for bool

source§

impl Eq for bool

source§

impl StructuralEq for bool

Auto Trait Implementations§

§

impl RefUnwindSafe for bool

§

impl Send for bool

§

impl Sync for bool

§

impl Unpin for bool

§

impl UnwindSafe for bool

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

获取 selfTypeIdRead more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

从拥有的值中一成不变地借用。 Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

从拥有的值中借用。 Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

返回未更改的参数。

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

调用 U::from(self)

也就是说,这种转换是 From<T> for U 实现选择执行的任何操作。

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

发生转换错误时返回的类型。
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

执行转换。
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

发生转换错误时返回的类型。
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

执行转换。