Struct bitvec::ptr::BitPtrRange  
source · #[repr(C)]pub struct BitPtrRange<M = Const, T = usize, O = Lsb0>{
    pub start: BitPtr<M, T, O>,
    pub end: BitPtr<M, T, O>,
}Expand description
Bit-Pointer Range
This type is equivalent in purpose, but superior in functionality, to
Range<BitPtr<M, T, O>>. If the standard library stabilizes Step, the trait
used to drive Range operations, then this type will likely be destroyed in
favor of an impl Step for BitPtr block and use of standard ranges.
Like Range, this is a half-open set where the low bit-pointer selects the
first live bit in a span and the high bit-pointer selects the first dead bit
after the span.
This type is not capable of inspecting provenance, and has no requirement of its
own that both bit-pointers be derived from the same provenance region. It is
safe to construct and use with any pair of bit-pointers; however, the
bit-pointers it produces are, necessarily, unsafe to use.
Original
Memory Representation
BitPtr is required to be repr(packed) in order to satisfy the BitRef
size optimizations. In order to stay minimally sized itself, this type has no
alignment requirement, and reading either bit-pointer may incur a misalignment
penalty. Reads are always safe and valid; they may merely be slow.
Type Parameters
This takes the same type parameters as BitPtr, as it is simply a pair of
bit-pointers with range semantics.
Fields§
§start: BitPtr<M, T, O>The lower, inclusive, bound of the range. The bit to which this points is considered live.
end: BitPtr<M, T, O>The higher, exclusive, bound of the range. The bit to which this points is considered dead, and the pointer may be one bit beyond the bounds of an allocation region.
Because Rust and LLVM both define the address of base + (len * width)
as being within the provenance of base, even though that address may
itself be the base address of another region in a different provenance,
and bit-pointers are always composed of an ordinary memory address and a
bit-counter, the ending bit-pointer is always valid.
Implementations§
source§impl<M, T, O> BitPtrRange<M, T, O>
 
impl<M, T, O> BitPtrRange<M, T, O>
sourcepub const EMPTY: Self = _
 
pub const EMPTY: Self = _
The canonical empty range. All ranges with zero length (equal .start
and .end) are equally empty.
sourcepub fn from_range(_: Range<BitPtr<M, T, O>>) -> Self
 
pub fn from_range(_: Range<BitPtr<M, T, O>>) -> Self
Explicitly converts a Range<BitPtr> into a BitPtrRange.
sourcepub fn into_range(self) -> Range<BitPtr<M, T, O>>
 
pub fn into_range(self) -> Range<BitPtr<M, T, O>>
Explicitly converts a BitPtrRange into a Range<BitPtr>.
sourcepub fn is_empty(&self) -> bool
 
pub fn is_empty(&self) -> bool
Tests if the range is empty (the distance between bit-pointers is 0).
Original
Examples
use bitvec::prelude::*;
use bitvec::ptr::BitPtrRange;
let data = 0u8;
let bp = BitPtr::<_, _, Lsb0>::from_ref(&data);
let mut range = BitPtrRange::from_range(bp .. bp.wrapping_add(1));
assert!(!range.is_empty());
assert_ne!(range.start, range.end);
range.next();
assert!(range.is_empty());
assert_eq!(range.start, range.end);sourcepub fn contains<M2, T2>(&self, pointer: &BitPtr<M2, T2, O>) -> boolwhere
    M2: Mutability,
    T2: BitStore,
 
pub fn contains<M2, T2>(&self, pointer: &BitPtr<M2, T2, O>) -> boolwhere
    M2: Mutability,
    T2: BitStore,
Tests if a given bit-pointer is contained within the range.
Bit-pointer ordering is defined when the types have the same exact
BitOrder type parameter and the same BitStore::Mem associated type
(but are free to differ in alias condition!). Inclusion in a range
occurs when the bit-pointer is not strictly less than the range start,
and is strictly less than the range end.
Original
Examples
use bitvec::prelude::*;
use bitvec::ptr::BitPtrRange;
use core::cell::Cell;
let data = 0u16;
let bp = BitPtr::<_, _, Lsb0>::from_ref(&data);
let mut range = BitPtrRange::from_range(bp .. bp.wrapping_add(16));
range.nth(2);
range.nth_back(2);
assert!(bp < range.start);
assert!(!range.contains(&bp));
let mid = bp.wrapping_add(8);
let same_mem = mid.cast::<Cell<u16>>();
assert!(range.contains(&mid));Casting to a different BitStore type whose Mem parameter differs
from the range always results in a false response, even if the pointer
being tested is numerically within the range.
Trait Implementations§
source§impl<M, T, O> Clone for BitPtrRange<M, T, O>
 
impl<M, T, O> Clone for BitPtrRange<M, T, O>
source§impl<M, T, O> Debug for BitPtrRange<M, T, O>
 
impl<M, T, O> Debug for BitPtrRange<M, T, O>
source§impl<M, T, O> Default for BitPtrRange<M, T, O>
 
impl<M, T, O> Default for BitPtrRange<M, T, O>
source§impl<M, T, O> DoubleEndedIterator for BitPtrRange<M, T, O>
 
impl<M, T, O> DoubleEndedIterator for BitPtrRange<M, T, O>
source§fn next_back(&mut self) -> Option<Self::Item>
 
fn next_back(&mut self) -> Option<Self::Item>
source§fn nth_back(&mut self, n: usize) -> Option<Self::Item>
 
fn nth_back(&mut self, n: usize) -> Option<Self::Item>
nth element from the end of the iterator. Read more§fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>
 
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>
iter_advance_by)n elements. Read more1.27.0§fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere
    Self: Sized,
    F: FnMut(B, Self::Item) -> R,
    R: Try<Output = B>,
 
fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere
    Self: Sized,
    F: FnMut(B, Self::Item) -> R,
    R: Try<Output = B>,
Iterator::try_fold()]: it takes
elements starting from the back of the iterator. Read moresource§impl<M, T, O> ExactSizeIterator for BitPtrRange<M, T, O>
 
impl<M, T, O> ExactSizeIterator for BitPtrRange<M, T, O>
source§impl<M, T, O> From<BitPtrRange<M, T, O>> for Range<BitPtr<M, T, O>>
 
impl<M, T, O> From<BitPtrRange<M, T, O>> for Range<BitPtr<M, T, O>>
source§fn from(range: BitPtrRange<M, T, O>) -> Self
 
fn from(range: BitPtrRange<M, T, O>) -> Self
source§impl<M, T, O> From<Range<BitPtr<M, T, O>>> for BitPtrRange<M, T, O>
 
impl<M, T, O> From<Range<BitPtr<M, T, O>>> for BitPtrRange<M, T, O>
source§impl<M, T, O> Hash for BitPtrRange<M, T, O>
 
impl<M, T, O> Hash for BitPtrRange<M, T, O>
source§impl<M, T, O> Iterator for BitPtrRange<M, T, O>
 
impl<M, T, O> Iterator for BitPtrRange<M, T, O>
source§fn size_hint(&self) -> (usize, Option<usize>)
 
fn size_hint(&self) -> (usize, Option<usize>)
source§fn count(self) -> usize
 
fn count(self) -> usize
source§fn last(self) -> Option<Self::Item>
 
fn last(self) -> Option<Self::Item>
source§fn next(&mut self) -> Option<Self::Item>
 
fn next(&mut self) -> Option<Self::Item>
source§fn nth(&mut self, n: usize) -> Option<Self::Item>
 
fn nth(&mut self, n: usize) -> Option<Self::Item>
nth element of the iterator. Read more§fn next_chunk<const N: usize>(
    &mut self
) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where
    Self: Sized,
 
fn next_chunk<const N: usize>(
    &mut self
) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where
    Self: Sized,
iter_next_chunk)N values. Read more§fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>
 
fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>
iter_advance_by)n elements. Read more1.28.0§fn step_by(self, step: usize) -> StepBy<Self>where
    Self: Sized,
 
fn step_by(self, step: usize) -> StepBy<Self>where
    Self: Sized,
1.0.0§fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where
    Self: Sized,
    U: IntoIterator<Item = Self::Item>,
 
fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where
    Self: Sized,
    U: IntoIterator<Item = Self::Item>,
1.0.0§fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where
    Self: Sized,
    U: IntoIterator,
 
fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where
    Self: Sized,
    U: IntoIterator,
§fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where
    Self: Sized,
    G: FnMut() -> Self::Item,
 
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where
    Self: Sized,
    G: FnMut() -> Self::Item,
iter_intersperse)separator
between adjacent items of the original iterator. Read more1.0.0§fn map<B, F>(self, f: F) -> Map<Self, F> ⓘwhere
    Self: Sized,
    F: FnMut(Self::Item) -> B,
 
fn map<B, F>(self, f: F) -> Map<Self, F> ⓘwhere
    Self: Sized,
    F: FnMut(Self::Item) -> B,
1.21.0§fn for_each<F>(self, f: F)where
    Self: Sized,
    F: FnMut(Self::Item),
 
fn for_each<F>(self, f: F)where
    Self: Sized,
    F: FnMut(Self::Item),
1.0.0§fn filter<P>(self, predicate: P) -> Filter<Self, P>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
 
fn filter<P>(self, predicate: P) -> Filter<Self, P>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
1.0.0§fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where
    Self: Sized,
    F: FnMut(Self::Item) -> Option<B>,
 
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where
    Self: Sized,
    F: FnMut(Self::Item) -> Option<B>,
1.0.0§fn enumerate(self) -> Enumerate<Self>where
    Self: Sized,
 
fn enumerate(self) -> Enumerate<Self>where
    Self: Sized,
1.0.0§fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
 
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
1.0.0§fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
 
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
1.57.0§fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where
    Self: Sized,
    P: FnMut(Self::Item) -> Option<B>,
 
fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where
    Self: Sized,
    P: FnMut(Self::Item) -> Option<B>,
1.0.0§fn skip(self, n: usize) -> Skip<Self>where
    Self: Sized,
 
fn skip(self, n: usize) -> Skip<Self>where
    Self: Sized,
n elements. Read more1.0.0§fn take(self, n: usize) -> Take<Self>where
    Self: Sized,
 
fn take(self, n: usize) -> Take<Self>where
    Self: Sized,
n elements, or fewer
if the underlying iterator ends sooner. Read more1.0.0§fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where
    Self: Sized,
    F: FnMut(&mut St, Self::Item) -> Option<B>,
 
fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where
    Self: Sized,
    F: FnMut(&mut St, Self::Item) -> Option<B>,
1.0.0§fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where
    Self: Sized,
    U: IntoIterator,
    F: FnMut(Self::Item) -> U,
 
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where
    Self: Sized,
    U: IntoIterator,
    F: FnMut(Self::Item) -> U,
§fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where
    Self: Sized,
    F: FnMut(&[Self::Item; N]) -> R,
 
fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where
    Self: Sized,
    F: FnMut(&[Self::Item; N]) -> R,
iter_map_windows)f for each contiguous window of size N over
self and returns an iterator over the outputs of f. Like slice::windows(),
the windows during mapping overlap as well. Read more1.0.0§fn fuse(self) -> Fuse<Self>where
    Self: Sized,
 
fn fuse(self) -> Fuse<Self>where
    Self: Sized,
None]. Read more1.0.0§fn inspect<F>(self, f: F) -> Inspect<Self, F>where
    Self: Sized,
    F: FnMut(&Self::Item),
 
fn inspect<F>(self, f: F) -> Inspect<Self, F>where
    Self: Sized,
    F: FnMut(&Self::Item),
1.0.0§fn by_ref(&mut self) -> &mut Selfwhere
    Self: Sized,
 
fn by_ref(&mut self) -> &mut Selfwhere
    Self: Sized,
1.0.0§fn collect<B>(self) -> Bwhere
    B: FromIterator<Self::Item>,
    Self: Sized,
 
fn collect<B>(self) -> Bwhere
    B: FromIterator<Self::Item>,
    Self: Sized,
§fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere
    E: Extend<Self::Item>,
    Self: Sized,
 
fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere
    E: Extend<Self::Item>,
    Self: Sized,
iter_collect_into)1.0.0§fn partition<B, F>(self, f: F) -> (B, B)where
    Self: Sized,
    B: Default + Extend<Self::Item>,
    F: FnMut(&Self::Item) -> bool,
 
fn partition<B, F>(self, f: F) -> (B, B)where
    Self: Sized,
    B: Default + Extend<Self::Item>,
    F: FnMut(&Self::Item) -> bool,
§fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere
    T: 'a,
    Self: Sized + DoubleEndedIterator<Item = &'a mut T>,
    P: FnMut(&T) -> bool,
 
fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere
    T: 'a,
    Self: Sized + DoubleEndedIterator<Item = &'a mut T>,
    P: FnMut(&T) -> bool,
iter_partition_in_place)true precede all those that return false.
Returns the number of true elements found. Read more§fn is_partitioned<P>(self, predicate: P) -> boolwhere
    Self: Sized,
    P: FnMut(Self::Item) -> bool,
 
fn is_partitioned<P>(self, predicate: P) -> boolwhere
    Self: Sized,
    P: FnMut(Self::Item) -> bool,
iter_is_partitioned)true precede all those that return false. Read more1.27.0§fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere
    Self: Sized,
    F: FnMut(B, Self::Item) -> R,
    R: Try<Output = B>,
 
fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere
    Self: Sized,
    F: FnMut(B, Self::Item) -> R,
    R: Try<Output = B>,
1.27.0§fn try_for_each<F, R>(&mut self, f: F) -> Rwhere
    Self: Sized,
    F: FnMut(Self::Item) -> R,
    R: Try<Output = ()>,
 
fn try_for_each<F, R>(&mut self, f: F) -> Rwhere
    Self: Sized,
    F: FnMut(Self::Item) -> R,
    R: Try<Output = ()>,
1.0.0§fn fold<B, F>(self, init: B, f: F) -> Bwhere
    Self: Sized,
    F: FnMut(B, Self::Item) -> B,
 
fn fold<B, F>(self, init: B, f: F) -> Bwhere
    Self: Sized,
    F: FnMut(B, Self::Item) -> B,
1.51.0§fn reduce<F>(self, f: F) -> Option<Self::Item>where
    Self: Sized,
    F: FnMut(Self::Item, Self::Item) -> Self::Item,
 
fn reduce<F>(self, f: F) -> Option<Self::Item>where
    Self: Sized,
    F: FnMut(Self::Item, Self::Item) -> Self::Item,
§fn try_reduce<F, R>(
    &mut self,
    f: F
) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere
    Self: Sized,
    F: FnMut(Self::Item, Self::Item) -> R,
    R: Try<Output = Self::Item>,
    <R as Try>::Residual: Residual<Option<Self::Item>>,
 
fn try_reduce<F, R>(
    &mut self,
    f: F
) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere
    Self: Sized,
    F: FnMut(Self::Item, Self::Item) -> R,
    R: Try<Output = Self::Item>,
    <R as Try>::Residual: Residual<Option<Self::Item>>,
iterator_try_reduce)1.0.0§fn all<F>(&mut self, f: F) -> boolwhere
    Self: Sized,
    F: FnMut(Self::Item) -> bool,
 
fn all<F>(&mut self, f: F) -> boolwhere
    Self: Sized,
    F: FnMut(Self::Item) -> bool,
1.0.0§fn any<F>(&mut self, f: F) -> boolwhere
    Self: Sized,
    F: FnMut(Self::Item) -> bool,
 
fn any<F>(&mut self, f: F) -> boolwhere
    Self: Sized,
    F: FnMut(Self::Item) -> bool,
1.0.0§fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
 
fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
1.30.0§fn find_map<B, F>(&mut self, f: F) -> Option<B>where
    Self: Sized,
    F: FnMut(Self::Item) -> Option<B>,
 
fn find_map<B, F>(&mut self, f: F) -> Option<B>where
    Self: Sized,
    F: FnMut(Self::Item) -> Option<B>,
§fn try_find<F, R>(
    &mut self,
    f: F
) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere
    Self: Sized,
    F: FnMut(&Self::Item) -> R,
    R: Try<Output = bool>,
    <R as Try>::Residual: Residual<Option<Self::Item>>,
 
fn try_find<F, R>(
    &mut self,
    f: F
) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere
    Self: Sized,
    F: FnMut(&Self::Item) -> R,
    R: Try<Output = bool>,
    <R as Try>::Residual: Residual<Option<Self::Item>>,
try_find)1.0.0§fn position<P>(&mut self, predicate: P) -> Option<usize>where
    Self: Sized,
    P: FnMut(Self::Item) -> bool,
 
fn position<P>(&mut self, predicate: P) -> Option<usize>where
    Self: Sized,
    P: FnMut(Self::Item) -> bool,
1.0.0§fn rposition<P>(&mut self, predicate: P) -> Option<usize>where
    P: FnMut(Self::Item) -> bool,
    Self: Sized + ExactSizeIterator + DoubleEndedIterator,
 
fn rposition<P>(&mut self, predicate: P) -> Option<usize>where
    P: FnMut(Self::Item) -> bool,
    Self: Sized + ExactSizeIterator + DoubleEndedIterator,
1.6.0§fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where
    B: Ord,
    Self: Sized,
    F: FnMut(&Self::Item) -> B,
 
fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where
    B: Ord,
    Self: Sized,
    F: FnMut(&Self::Item) -> B,
1.15.0§fn max_by<F>(self, compare: F) -> Option<Self::Item>where
    Self: Sized,
    F: FnMut(&Self::Item, &Self::Item) -> Ordering,
 
fn max_by<F>(self, compare: F) -> Option<Self::Item>where
    Self: Sized,
    F: FnMut(&Self::Item, &Self::Item) -> Ordering,
1.6.0§fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where
    B: Ord,
    Self: Sized,
    F: FnMut(&Self::Item) -> B,
 
fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where
    B: Ord,
    Self: Sized,
    F: FnMut(&Self::Item) -> B,
1.15.0§fn min_by<F>(self, compare: F) -> Option<Self::Item>where
    Self: Sized,
    F: FnMut(&Self::Item, &Self::Item) -> Ordering,
 
fn min_by<F>(self, compare: F) -> Option<Self::Item>where
    Self: Sized,
    F: FnMut(&Self::Item, &Self::Item) -> Ordering,
1.0.0§fn rev(self) -> Rev<Self>where
    Self: Sized + DoubleEndedIterator,
 
fn rev(self) -> Rev<Self>where
    Self: Sized + DoubleEndedIterator,
1.0.0§fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where
    FromA: Default + Extend<A>,
    FromB: Default + Extend<B>,
    Self: Sized + Iterator<Item = (A, B)>,
 
fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where
    FromA: Default + Extend<A>,
    FromB: Default + Extend<B>,
    Self: Sized + Iterator<Item = (A, B)>,
1.36.0§fn copied<'a, T>(self) -> Copied<Self>where
    T: 'a + Copy,
    Self: Sized + Iterator<Item = &'a T>,
 
fn copied<'a, T>(self) -> Copied<Self>where
    T: 'a + Copy,
    Self: Sized + Iterator<Item = &'a T>,
1.0.0§fn cloned<'a, T>(self) -> Cloned<Self>where
    T: 'a + Clone,
    Self: Sized + Iterator<Item = &'a T>,
 
fn cloned<'a, T>(self) -> Cloned<Self>where
    T: 'a + Clone,
    Self: Sized + Iterator<Item = &'a T>,
1.0.0§fn cycle(self) -> Cycle<Self>where
    Self: Sized + Clone,
 
fn cycle(self) -> Cycle<Self>where
    Self: Sized + Clone,
§fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where
    Self: Sized,
 
fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where
    Self: Sized,
iter_array_chunks)N elements of the iterator at a time. Read more1.11.0§fn sum<S>(self) -> Swhere
    Self: Sized,
    S: Sum<Self::Item>,
 
fn sum<S>(self) -> Swhere
    Self: Sized,
    S: Sum<Self::Item>,
1.11.0§fn product<P>(self) -> Pwhere
    Self: Sized,
    P: Product<Self::Item>,
 
fn product<P>(self) -> Pwhere
    Self: Sized,
    P: Product<Self::Item>,
§fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere
    Self: Sized,
    I: IntoIterator,
    F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
 
fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere
    Self: Sized,
    I: IntoIterator,
    F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
iter_order_by)Iterator] with those
of another with respect to the specified comparison function. Read more1.5.0§fn partial_cmp<I>(self, other: I) -> Option<Ordering>where
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn partial_cmp<I>(self, other: I) -> Option<Ordering>where
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
PartialOrd] elements of
this [Iterator] with those of another. The comparison works like short-circuit
evaluation, returning a result without comparing the remaining elements.
As soon as an order can be determined, the evaluation stops and a result is returned. Read more§fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where
    Self: Sized,
    I: IntoIterator,
    F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
 
fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where
    Self: Sized,
    I: IntoIterator,
    F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
iter_order_by)Iterator] with those
of another with respect to the specified comparison function. Read more1.5.0§fn eq<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialEq<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn eq<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialEq<<I as IntoIterator>::Item>,
    Self: Sized,
Iterator] are equal to those of
another. Read more§fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere
    Self: Sized,
    I: IntoIterator,
    F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
 
fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere
    Self: Sized,
    I: IntoIterator,
    F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
iter_order_by)Iterator] are equal to those of
another with respect to the specified equality function. Read more1.5.0§fn ne<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialEq<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn ne<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialEq<<I as IntoIterator>::Item>,
    Self: Sized,
Iterator] are not equal to those of
another. Read more1.5.0§fn lt<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn lt<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
Iterator] are lexicographically
less than those of another. Read more1.5.0§fn le<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn le<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
Iterator] are lexicographically
less or equal to those of another. Read more1.5.0§fn gt<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn gt<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
Iterator] are lexicographically
greater than those of another. Read more1.5.0§fn ge<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn ge<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
Iterator] are lexicographically
greater than or equal to those of another. Read more§fn is_sorted_by<F>(self, compare: F) -> boolwhere
    Self: Sized,
    F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
 
fn is_sorted_by<F>(self, compare: F) -> boolwhere
    Self: Sized,
    F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
is_sorted)§fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere
    Self: Sized,
    F: FnMut(Self::Item) -> K,
    K: PartialOrd,
 
fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere
    Self: Sized,
    F: FnMut(Self::Item) -> K,
    K: PartialOrd,
is_sorted)source§impl<M1, M2, O, T1, T2> PartialEq<BitPtrRange<M2, T2, O>> for BitPtrRange<M1, T1, O>
 
impl<M1, M2, O, T1, T2> PartialEq<BitPtrRange<M2, T2, O>> for BitPtrRange<M1, T1, O>
source§fn eq(&self, other: &BitPtrRange<M2, T2, O>) -> bool
 
fn eq(&self, other: &BitPtrRange<M2, T2, O>) -> bool
self and other values to be equal, and is used
by ==.source§impl<M, T, O> RangeBounds<BitPtr<M, T, O>> for BitPtrRange<M, T, O>
 
impl<M, T, O> RangeBounds<BitPtr<M, T, O>> for BitPtrRange<M, T, O>
source§fn start_bound(&self) -> Bound<&BitPtr<M, T, O>>
 
fn start_bound(&self) -> Bound<&BitPtr<M, T, O>>
impl<M, T, O> Eq for BitPtrRange<M, T, O>
impl<M, T, O> FusedIterator for BitPtrRange<M, T, O>
Auto Trait Implementations§
impl<M, T, O> RefUnwindSafe for BitPtrRange<M, T, O>
impl<M = Const, T = usize, O = Lsb0> !Send for BitPtrRange<M, T, O>
impl<M = Const, T = usize, O = Lsb0> !Sync for BitPtrRange<M, T, O>
impl<M, T, O> Unpin for BitPtrRange<M, T, O>where
    M: Unpin,
    O: Unpin,
impl<M, T, O> UnwindSafe for BitPtrRange<M, T, O>
Blanket Implementations§
§impl<T> Any for Twhere
    T: 'static + ?Sized,
 
impl<T> Any for Twhere
    T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
    T: ?Sized,
 
impl<T> Borrow<T> for Twhere
    T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
source§impl<T> FmtForward for T
 
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
    Self: Binary,
 
fn fmt_binary(self) -> FmtBinary<Self>where
    Self: Binary,
self to use its Binary implementation when Debug-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
    Self: Display,
 
fn fmt_display(self) -> FmtDisplay<Self>where
    Self: Display,
self to use its Display implementation when
Debug-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
    Self: LowerExp,
 
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
    Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
    Self: LowerHex,
 
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
    Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
    Self: Octal,
 
fn fmt_octal(self) -> FmtOctal<Self>where
    Self: Octal,
self to use its Octal implementation when Debug-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
    Self: Pointer,
 
fn fmt_pointer(self) -> FmtPointer<Self>where
    Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
    Self: UpperExp,
 
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
    Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
    Self: UpperHex,
 
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
    Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§impl<T, U> Into<U> for Twhere
    U: From<T>,
 
impl<T, U> Into<U> for Twhere
    U: From<T>,
§impl<I> IntoIterator for Iwhere
    I: Iterator,
 
impl<I> IntoIterator for Iwhere
    I: Iterator,
source§impl<T> Pipe for Twhere
    T: ?Sized,
 
impl<T> Pipe for Twhere
    T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
    Self: Sized,
 
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
    Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
    R: 'a,
 
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
    R: 'a,
self and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
    R: 'a,
 
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
    R: 'a,
self and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
    Self: Borrow<B>,
    B: 'a + ?Sized,
    R: 'a,
 
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
    Self: Borrow<B>,
    B: 'a + ?Sized,
    R: 'a,
source§fn pipe_borrow_mut<'a, B, R>(
    &'a mut self,
    func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
    Self: BorrowMut<B>,
    B: 'a + ?Sized,
    R: 'a,
 
fn pipe_borrow_mut<'a, B, R>(
    &'a mut self,
    func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
    Self: BorrowMut<B>,
    B: 'a + ?Sized,
    R: 'a,
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
    Self: AsRef<U>,
    U: 'a + ?Sized,
    R: 'a,
 
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
    Self: AsRef<U>,
    U: 'a + ?Sized,
    R: 'a,
self, then passes self.as_ref() into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
    Self: AsMut<U>,
    U: 'a + ?Sized,
    R: 'a,
 
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
    Self: AsMut<U>,
    U: 'a + ?Sized,
    R: 'a,
self, then passes self.as_mut() into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere
    Self: Deref<Target = T>,
    T: 'a + ?Sized,
    R: 'a,
 
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere
    Self: Deref<Target = T>,
    T: 'a + ?Sized,
    R: 'a,
self, then passes self.deref() into the pipe function.source§fn pipe_deref_mut<'a, T, R>(
    &'a mut self,
    func: impl FnOnce(&'a mut T) -> R
) -> Rwhere
    Self: DerefMut<Target = T> + Deref,
    T: 'a + ?Sized,
    R: 'a,
 
fn pipe_deref_mut<'a, T, R>(
    &'a mut self,
    func: impl FnOnce(&'a mut T) -> R
) -> Rwhere
    Self: DerefMut<Target = T> + Deref,
    T: 'a + ?Sized,
    R: 'a,
self, then passes self.deref_mut() into the pipe
function.source§impl<T> Tap for T
 
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
    Self: Borrow<B>,
    B: ?Sized,
 
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
    Self: Borrow<B>,
    B: ?Sized,
Borrow<B> of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
    Self: BorrowMut<B>,
    B: ?Sized,
 
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
    Self: BorrowMut<B>,
    B: ?Sized,
BorrowMut<B> of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
    Self: AsRef<R>,
    R: ?Sized,
 
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
    Self: AsRef<R>,
    R: ?Sized,
AsRef<R> view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
    Self: AsMut<R>,
    R: ?Sized,
 
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
    Self: AsMut<R>,
    R: ?Sized,
AsMut<R> view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
    Self: Deref<Target = T>,
    T: ?Sized,
 
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
    Self: Deref<Target = T>,
    T: ?Sized,
Deref::Target of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
    Self: DerefMut<Target = T> + Deref,
    T: ?Sized,
 
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
    Self: DerefMut<Target = T> + Deref,
    T: ?Sized,
Deref::Target of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
 
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
 
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
    Self: Borrow<B>,
    B: ?Sized,
 
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
    Self: Borrow<B>,
    B: ?Sized,
.tap_borrow() only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
    Self: BorrowMut<B>,
    B: ?Sized,
 
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
    Self: BorrowMut<B>,
    B: ?Sized,
.tap_borrow_mut() only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
    Self: AsRef<R>,
    R: ?Sized,
 
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
    Self: AsRef<R>,
    R: ?Sized,
.tap_ref() only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
    Self: AsMut<R>,
    R: ?Sized,
 
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
    Self: AsMut<R>,
    R: ?Sized,
.tap_ref_mut() only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere
    Self: Deref<Target = T>,
    T: ?Sized,
 
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere
    Self: Deref<Target = T>,
    T: ?Sized,
.tap_deref() only in debug builds, and is erased in release
builds.source§fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
    Self: DerefMut<Target = T> + Deref,
    T: ?Sized,
 
fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
    Self: DerefMut<Target = T> + Deref,
    T: ?Sized,
.tap_deref_mut() only in debug builds, and is erased in release
builds.