blob: b12b8eb1ea1ea42487d7ee07e5e36f0abd46e49a [file] [log] [blame] [view]
# Bit-Pointer Equality
This compares two bit-pointers for equality by their address value, not by the
value of their referent bit. This does not dereference either.
## Original
[`ptr::eq`](core::ptr::eq)
## API Differences
The two bit-pointers can differ in their storage type parameters. `bitvec`
defines pointer equality only between pointers with the same underlying
[`BitStore::Mem`][0] element type. Numerically-equal bit-pointers with different
integer types *will not* compare equal, though this function will compile and
accept them.
This cannot compare encoded span poiters. `*const BitSlice` can be used in the
standard-library `ptr::eq`, and does not need an override.
## Examples
```rust
use bitvec::prelude::*;
use bitvec::ptr as bv_ptr;
use core::cell::Cell;
let data = 0u16;
let bare_ptr = BitPtr::<_, _, Lsb0>::from_ref(&data);
let cell_ptr = bare_ptr.cast::<Cell<u16>>();
assert!(bv_ptr::eq(bare_ptr, cell_ptr));
let byte_ptr = bare_ptr.cast::<u8>();
assert!(!bv_ptr::eq(bare_ptr, byte_ptr));
```
[0]: crate::store::BitStore::Mem