Skip to content

Commit

Permalink
Rollup merge of rust-lang#35809 - matthew-piziak:bitwise-and-example,…
Browse files Browse the repository at this point in the history
… r=GuillaumeGomez

replace `BitAnd` example with something more evocative of bitwise AND
  • Loading branch information
Jonathan Turner authored Aug 22, 2016
2 parents f46438c + 9f88f8a commit b695049
Showing 1 changed file with 27 additions and 12 deletions.
39 changes: 27 additions & 12 deletions src/libcore/ops.rs
Original file line number Diff line number Diff line change
Expand Up @@ -694,26 +694,41 @@ not_impl! { bool usize u8 u16 u32 u64 isize i8 i16 i32 i64 }
///
/// # Examples
///
/// A trivial implementation of `BitAnd`. When `Foo & Foo` happens, it ends up
/// calling `bitand`, and therefore, `main` prints `Bitwise And-ing!`.
/// In this example, the `BitAnd` trait is implemented for a `BooleanVector`
/// struct.
///
/// ```
/// use std::ops::BitAnd;
///
/// struct Foo;
///
/// impl BitAnd for Foo {
/// type Output = Foo;
///
/// fn bitand(self, _rhs: Foo) -> Foo {
/// println!("Bitwise And-ing!");
/// self
/// #[derive(Debug)]
/// struct BooleanVector {
/// value: Vec<bool>,
/// };
///
/// impl BitAnd for BooleanVector {
/// type Output = Self;
///
/// fn bitand(self, rhs: Self) -> Self {
/// BooleanVector {
/// value: self.value
/// .iter()
/// .zip(rhs.value.iter())
/// .map(|(x, y)| *x && *y)
/// .collect(),
/// }
/// }
/// }
///
/// fn main() {
/// Foo & Foo;
/// impl PartialEq for BooleanVector {
/// fn eq(&self, other: &Self) -> bool {
/// self.value == other.value
/// }
/// }
///
/// let bv1 = BooleanVector { value: vec![true, true, false, false] };
/// let bv2 = BooleanVector { value: vec![true, false, true, false] };
/// let expected = BooleanVector { value: vec![true, false, false, false] };
/// assert_eq!(bv1 & bv2, expected);
/// ```
#[lang = "bitand"]
#[stable(feature = "rust1", since = "1.0.0")]
Expand Down

0 comments on commit b695049

Please sign in to comment.