# Bit-Slice Operator Implementations
The standard-library slices only implement the indexing operator `[]`.
`BitSlice` additionally implements the Boolean operators `&`, `|`, `^`, and `!`.
The dyadic Boolean arithmetic operators all take any `bitvec` container as their
second argument, and apply the operation in-place to the left-hand bit-slice. If
the second argument exhausts before `self` does, then it is implicitly
zero-extended. This means that `&=` zeros excess bits in `self`, while `|=` and
`^=` do not modify them.
The monadic operator `!` inverts the entire bit-slice at once. Its API requires
*taking* a `&mut BitSlice` reference and returning it, so you will need to
structure your code accordingly.
[`BitSlice::domain_mut`]: crate::slice::BitSlice::domain_mut