本文簡要介紹rust語言中  Trait core::ops::BitXor  的用法。
用法
pub trait BitXor<Rhs = Self> {
    type Output;
    fn bitxor(self, rhs: Rhs) -> Self::Output;
}按位異或運算符 ^ 。
請注意,Rhs 默認為 Self,但這不是強製性的。
例子
BitXor 的實現,將 ^ 提升到圍繞 bool 的包裝器。
use std::ops::BitXor;
#[derive(Debug, PartialEq)]
struct Scalar(bool);
impl BitXor for Scalar {
    type Output = Self;
    // rhs is the "right-hand side" of the expression `a ^ b`
    fn bitxor(self, rhs: Self) -> Self::Output {
        Self(self.0 ^ rhs.0)
    }
}
assert_eq!(Scalar(true) ^ Scalar(true), Scalar(false));
assert_eq!(Scalar(true) ^ Scalar(false), Scalar(true));
assert_eq!(Scalar(false) ^ Scalar(true), Scalar(true));
assert_eq!(Scalar(false) ^ Scalar(false), Scalar(false));BitXor trait 的實現,用於圍繞 Vec<bool> 的包裝器。
use std::ops::BitXor;
#[derive(Debug, PartialEq)]
struct BooleanVector(Vec<bool>);
impl BitXor for BooleanVector {
    type Output = Self;
    fn bitxor(self, Self(rhs): Self) -> Self::Output {
        let Self(lhs) = self;
        assert_eq!(lhs.len(), rhs.len());
        Self(
            lhs.iter()
                .zip(rhs.iter())
                .map(|(x, y)| *x ^ *y)
                .collect()
        )
    }
}
let bv1 = BooleanVector(vec![true, true, false, false]);
let bv2 = BooleanVector(vec![true, false, true, false]);
let expected = BooleanVector(vec![false, true, true, false]);
assert_eq!(bv1 ^ bv2, expected);相關用法
- Rust BitXorAssign用法及代碼示例
- Rust BitXor.bitxor用法及代碼示例
- Rust BitXorAssign.bitxor_assign用法及代碼示例
- Rust BitOrAssign用法及代碼示例
- Rust BitOr.bitor用法及代碼示例
- Rust BitOrAssign.bitor_assign用法及代碼示例
- Rust BitAnd用法及代碼示例
- Rust BitAnd.bitand用法及代碼示例
- Rust BitAndAssign.bitand_assign用法及代碼示例
- Rust BitAndAssign用法及代碼示例
- Rust BitOr用法及代碼示例
- Rust BinaryHeap.capacity用法及代碼示例
- Rust BinaryHeap.push用法及代碼示例
- Rust BinaryHeap.clear用法及代碼示例
- Rust BinaryHeap.new用法及代碼示例
- Rust BinaryHeap.retain用法及代碼示例
- Rust BinaryHeap用法及代碼示例
- Rust BinaryHeap.pop用法及代碼示例
- Rust BinaryHeap.peek_mut用法及代碼示例
- Rust BinaryHeap.reserve_exact用法及代碼示例
- Rust BinaryHeap.as_slice用法及代碼示例
- Rust Binary用法及代碼示例
- Rust BinaryHeap.peek用法及代碼示例
- Rust BinaryHeap.drain用法及代碼示例
- Rust BinaryHeap.reserve用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Trait core::ops::BitXor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
