pub struct StaticRc<T: ?Sized, const NUM: usize, const DEN: usize> { /* private fields */ }
Expand description
A compile-time reference-counted pointer.
The inherent methods of StaticRc
are all associated functions to avoid conflicts with the the methods of the
inner type T
which are brought into scope by the Deref
implementation.
The parameters NUM
and DEN
DENote the ratio (NUM / DEN
) of ownership of the pointer:
- The ratio is always in the (0, 1] interval, that is:
NUM > 0
andNUM <= DEN
. - When the ratio is equal to 1, that is when
NUM == DEN
, then the instance has full ownership of the pointee and extra capabilities are unlocked.
Implementations§
Source§impl<T, const N: usize> StaticRc<T, N, N>
impl<T, const N: usize> StaticRc<T, N, N>
Sourcepub fn new(value: T) -> Self
pub fn new(value: T) -> Self
Constructs a new StaticRc<T, N, N>
.
This uses Box
under the hood.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 1, 1>;
let rc = Full::new(42);
assert_eq!(42, *rc);
Sourcepub fn pin(value: T) -> Pin<Self>
pub fn pin(value: T) -> Pin<Self>
Constructs a new Pin<StaticRc<T, N, N>>
.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 1, 1>;
let rc = Full::pin(42);
assert_eq!(42, *rc);
Sourcepub fn into_inner(this: Self) -> T
pub fn into_inner(this: Self) -> T
Returns the inner value.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 1, 1>;
let rc = Full::new(42);
assert_eq!(42, Full::into_inner(rc));
Source§impl<T: ?Sized, const N: usize> StaticRc<T, N, N>
impl<T: ?Sized, const N: usize> StaticRc<T, N, N>
Source§impl<T: ?Sized, const NUM: usize, const DEN: usize> StaticRc<T, NUM, DEN>
impl<T: ?Sized, const NUM: usize, const DEN: usize> StaticRc<T, NUM, DEN>
Sourcepub fn into_raw(this: Self) -> NonNull<T>
pub fn into_raw(this: Self) -> NonNull<T>
Consumes the StaticRc
, returning the wrapped pointer.
To avoid a memory leak, the pointer must be converted back to Self
using StaticRc::from_raw
.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 1, 1>;
let rc = Full::new(42);
let leaked = Full::into_raw(rc);
let rc = unsafe { Full::from_raw(leaked) };
assert_eq!(42, *rc);
Sourcepub fn as_ptr(this: &Self) -> NonNull<T>
pub fn as_ptr(this: &Self) -> NonNull<T>
Provides a raw pointer to the data.
StaticRc
is not consumed or affected in any way, the pointer is valid as long as there are shared owners of
the value.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 1, 1>;
let rc = Full::new(42);
let pointer = Full::as_ptr(&rc);
assert_eq!(42, unsafe { *pointer.as_ref() });
Sourcepub fn get_ref(this: &Self) -> &T
pub fn get_ref(this: &Self) -> &T
Provides a reference to the data.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 1, 1>;
let rc = Full::new(42);
assert_eq!(42, *Full::get_ref(&rc));
Sourcepub unsafe fn from_raw(pointer: NonNull<T>) -> Self
pub unsafe fn from_raw(pointer: NonNull<T>) -> Self
Constructs a StaticRc<T, NUM, DEN>
from a raw pointer.
§Safety
The raw pointer must have been previously returned by a call to StaticRc<U, N, D>::into_raw
:
- If
U
is different fromT
, then specific restrictions on size and alignment apply. Seemem::transmute
for the restrictions applying to transmuting references. - If
N / D
is different fromNUM / DEN
, then specific restrictions apply. The user is responsible for ensuring proper management of the ratio of shares, and ultimately that the value is not dropped twice.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 2, 2>;
type Half = StaticRc<i32, 1, 2>;
let rc = Full::new(42);
let leaked = Full::into_raw(rc);
let (one, two) = unsafe { (Half::from_raw(leaked), Half::from_raw(leaked)) };
let rc = Full::join(one, two);
assert_eq!(42, *rc);
Sourcepub fn ptr_eq<const N: usize, const D: usize>(
this: &Self,
other: &StaticRc<T, N, D>,
) -> bool
pub fn ptr_eq<const N: usize, const D: usize>( this: &Self, other: &StaticRc<T, N, D>, ) -> bool
Returns true if the two StaticRc
point to the same allocation.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 2, 2>;
let rc = Full::new(42);
let (one, two) = Full::split::<1, 1>(rc);
assert!(StaticRc::ptr_eq(&one, &two));
Full::join(one, two);
Sourcepub fn adjust<const N: usize, const D: usize>(this: Self) -> StaticRc<T, N, D> ⓘ
pub fn adjust<const N: usize, const D: usize>(this: Self) -> StaticRc<T, N, D> ⓘ
Adjusts the NUMerator and DENUMerator of the ratio of the instance, preserving the ratio.
§Panics
If the compile-time-ratio feature is not used, and the ratio is not preserved; that is N / D <> NUM / DEN
.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 2, 2>;
let rc = Full::new(42);
let rc = Full::adjust::<1, 1>(rc);
assert_eq!(42, *rc);
Sourcepub fn as_rcref<'a>(this: &'a mut Self) -> StaticRcRef<'a, T, NUM, DEN> ⓘ
pub fn as_rcref<'a>(this: &'a mut Self) -> StaticRcRef<'a, T, NUM, DEN> ⓘ
Converts an instance into a StaticRcRef
.
The current instance is mutably borrowed for the duration the result can be used.
§Example
use static_rc::StaticRc;
use static_rc::StaticRcRef;
let rc: StaticRc<_, 2, 2> = StaticRc::new(5);
let (mut rc1, mut rc2) = StaticRc::split::<1, 1>(rc);
{
// Modify without moving `rc1`, `rc2`.
let rcref1 = StaticRc::as_rcref(&mut rc1);
let rcref2 = StaticRc::as_rcref(&mut rc2);
let mut rcref_owning: StaticRcRef<_, 2, 2> = StaticRcRef::join(rcref1, rcref2);
*rcref_owning = 9;
// Refs not used anymore, original rcs can be used again
}
let rc: StaticRc<_, 2, 2> = StaticRc::join(rc1, rc2);
assert_eq!(*rc, 9);
assert_eq!(*StaticRc::into_box(rc), 9);
Sourcepub fn split<const A: usize, const B: usize>(
this: Self,
) -> (StaticRc<T, A, DEN>, StaticRc<T, B, DEN>)
pub fn split<const A: usize, const B: usize>( this: Self, ) -> (StaticRc<T, A, DEN>, StaticRc<T, B, DEN>)
Splits the current instance into two instances with the specified NUMerators.
§Panics
If the compile-time-ratio feature is not used, and the ratio is not preserved; that is A + B <> NUM
.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 2, 2>;
type Half = StaticRc<i32, 1, 2>;
let rc = Full::new(42);
let (one, two): (Half, Half) = Full::split::<1, 1>(rc);
assert_eq!(42, *one);
Full::join(one, two);
Sourcepub fn split_array<const N: usize, const DIM: usize>(
this: Self,
) -> [StaticRc<T, N, DEN>; DIM]
pub fn split_array<const N: usize, const DIM: usize>( this: Self, ) -> [StaticRc<T, N, DEN>; DIM]
Splits the current instance into DIM
instances with the specified Numerators and Denominators.
§Panics
If the compile-time-ratio feature is not used, and the ratio is not preserved; that is N * DIM <> NUM
.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 2, 2>;
let rc = Full::new(42);
let array = Full::split_array::<1, 2>(rc);
assert_eq!(42, *array[0]);
Full::join_array(array);
Sourcepub fn join<const A: usize, const B: usize>(
left: StaticRc<T, A, DEN>,
right: StaticRc<T, B, DEN>,
) -> Self
pub fn join<const A: usize, const B: usize>( left: StaticRc<T, A, DEN>, right: StaticRc<T, B, DEN>, ) -> Self
Joins two instances into a single instance.
§Panics
If the two instances do no point to the same allocation, as determined by StaticRc::ptr_eq
.
If the compile-time-ratio feature is not used and the ratio is not preserved; that is A + B <> NUM
.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 3, 3>;
let rc = Full::new(42);
let (one, two) = Full::split::<1, 2>(rc);
let rc = Full::join(one, two);
assert_eq!(42, *rc);
Sourcepub unsafe fn join_unchecked<const A: usize, const B: usize>(
left: StaticRc<T, A, DEN>,
right: StaticRc<T, B, DEN>,
) -> Self
pub unsafe fn join_unchecked<const A: usize, const B: usize>( left: StaticRc<T, A, DEN>, right: StaticRc<T, B, DEN>, ) -> Self
Joins two instances into a single instance without checking whether they point to the same allocation.
Unless compile-time-ratio
is activated, the ratios are checked nevertheless.
§Safety
The caller must guarantee that those instances point to the same allocation.
§Panics
If the compile-time-ratio feature is not used and the ratio is not preserved; that is A + B <> NUM
.
In debug, if the two instances do not point to the same allocation, as determined by StaticRc::ptr_eq
.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 3, 3>;
let rc = Full::new(42);
let (one, two) = Full::split::<1, 2>(rc);
let rc = unsafe { Full::join_unchecked(one, two) };
assert_eq!(42, *rc);
Sourcepub fn join_array<const N: usize, const DIM: usize>(
array: [StaticRc<T, N, DEN>; DIM],
) -> Self
pub fn join_array<const N: usize, const DIM: usize>( array: [StaticRc<T, N, DEN>; DIM], ) -> Self
Joins DIM instances into a single instance.
§Panics
If all instances do not point to the same allocation, as determined by StaticRc::ptr_eq
.
If the compile-time-ratio feature is not used and the ratio is not preserved; that is N * DIM <> NUM
.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 2, 2>;
let rc = Full::new(42);
let array = Full::split_array::<1, 2>(rc);
let rc = Full::join_array(array);
assert_eq!(42, *rc);
Sourcepub unsafe fn join_array_unchecked<const N: usize, const DIM: usize>(
array: [StaticRc<T, N, DEN>; DIM],
) -> Self
pub unsafe fn join_array_unchecked<const N: usize, const DIM: usize>( array: [StaticRc<T, N, DEN>; DIM], ) -> Self
Joins DIM instances into a single instance.
§Panics
If the compile-time-ratio feature is not used and the ratio is not preserved; that is N * DIM <> NUM
.
In debug, if all instances do not point to the same allocation, as determined by StaticRc::ptr_eq
.
§Example
use static_rc::StaticRc;
type Full = StaticRc<i32, 2, 2>;
let rc = Full::new(42);
let array = Full::split_array::<1, 2>(rc);
let rc = unsafe { Full::join_array_unchecked(array) };
assert_eq!(42, *rc);
Trait Implementations§
Source§impl<T: ?Sized, const N: usize> BorrowMut<T> for StaticRc<T, N, N>
impl<T: ?Sized, const N: usize> BorrowMut<T> for StaticRc<T, N, N>
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T: ?Sized + Display, const NUM: usize, const DEN: usize> Display for StaticRc<T, NUM, DEN>
impl<T: ?Sized + Display, const NUM: usize, const DEN: usize> Display for StaticRc<T, NUM, DEN>
Source§impl<I: DoubleEndedIterator + ?Sized, const N: usize> DoubleEndedIterator for StaticRc<I, N, N>
impl<I: DoubleEndedIterator + ?Sized, const N: usize> DoubleEndedIterator for StaticRc<I, N, N>
Source§fn next_back(&mut self) -> Option<I::Item>
fn next_back(&mut self) -> Option<I::Item>
Source§fn nth_back(&mut self, n: usize) -> Option<I::Item>
fn nth_back(&mut self, n: usize) -> Option<I::Item>
n
th element from the end of the iterator. Read moreSource§fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
iter_advance_by
)n
elements. Read more1.27.0 · Source§fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
Iterator::try_fold()
: it takes
elements starting from the back of the iterator. Read moreSource§impl<I: ExactSizeIterator + ?Sized, const N: usize> ExactSizeIterator for StaticRc<I, N, N>
impl<I: ExactSizeIterator + ?Sized, const N: usize> ExactSizeIterator for StaticRc<I, N, N>
Source§impl<const NUM: usize, const DEN: usize> From<StaticRc<str, NUM, DEN>> for StaticRc<[u8], NUM, DEN>
impl<const NUM: usize, const DEN: usize> From<StaticRc<str, NUM, DEN>> for StaticRc<[u8], NUM, DEN>
Source§impl<T, const N: usize> FromIterator<T> for StaticRc<[T], N, N>
impl<T, const N: usize> FromIterator<T> for StaticRc<[T], N, N>
Source§fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
Source§impl<I: Iterator + ?Sized, const N: usize> Iterator for StaticRc<I, N, N>
impl<I: Iterator + ?Sized, const N: usize> Iterator for StaticRc<I, N, N>
Source§fn next(&mut self) -> Option<I::Item>
fn next(&mut self) -> Option<I::Item>
Source§fn size_hint(&self) -> (usize, Option<usize>)
fn size_hint(&self) -> (usize, Option<usize>)
Source§fn nth(&mut self, n: usize) -> Option<I::Item>
fn nth(&mut self, n: usize) -> Option<I::Item>
n
th element of the iterator. Read moreSource§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 more1.0.0 · Source§fn count(self) -> usizewhere
Self: Sized,
fn count(self) -> usizewhere
Self: Sized,
Source§fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
iter_advance_by
)n
elements. Read more1.28.0 · Source§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 · Source§fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
1.0.0 · Source§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,
Source§fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
iter_intersperse
)separator
between adjacent
items of the original iterator. Read moreSource§fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
iter_intersperse
)separator
between adjacent items of the original iterator. Read more1.0.0 · Source§fn map<B, F>(self, f: F) -> Map<Self, F>
fn map<B, F>(self, f: F) -> Map<Self, F>
1.0.0 · Source§fn filter<P>(self, predicate: P) -> Filter<Self, P>
fn filter<P>(self, predicate: P) -> Filter<Self, P>
1.0.0 · Source§fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
1.0.0 · Source§fn enumerate(self) -> Enumerate<Self>where
Self: Sized,
fn enumerate(self) -> Enumerate<Self>where
Self: Sized,
1.0.0 · Source§fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
1.0.0 · Source§fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
1.57.0 · Source§fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
1.0.0 · Source§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 · Source§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 · Source§fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
1.29.0 · Source§fn flatten(self) -> Flatten<Self>
fn flatten(self) -> Flatten<Self>
Source§fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
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 · Source§fn inspect<F>(self, f: F) -> Inspect<Self, F>
fn inspect<F>(self, f: F) -> Inspect<Self, F>
1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Source§fn try_collect<B>(
&mut self,
) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType
fn try_collect<B>( &mut self, ) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType
iterator_try_collect
)Source§fn collect_into<E>(self, collection: &mut E) -> &mut E
fn collect_into<E>(self, collection: &mut E) -> &mut E
iter_collect_into
)1.0.0 · Source§fn partition<B, F>(self, f: F) -> (B, B)
fn partition<B, F>(self, f: F) -> (B, B)
Source§fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
iter_partition_in_place
)true
precede all those that return false
.
Returns the number of true
elements found. Read moreSource§fn is_partitioned<P>(self, predicate: P) -> bool
fn is_partitioned<P>(self, predicate: P) -> bool
iter_is_partitioned
)true
precede all those that return false
. Read more1.27.0 · Source§fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
1.27.0 · Source§fn try_for_each<F, R>(&mut self, f: F) -> R
fn try_for_each<F, R>(&mut self, f: F) -> R
1.0.0 · Source§fn fold<B, F>(self, init: B, f: F) -> B
fn fold<B, F>(self, init: B, f: F) -> B
1.51.0 · Source§fn reduce<F>(self, f: F) -> Option<Self::Item>
fn reduce<F>(self, f: F) -> Option<Self::Item>
Source§fn try_reduce<R>(
&mut self,
f: impl FnMut(Self::Item, Self::Item) -> R,
) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
fn try_reduce<R>( &mut self, f: impl FnMut(Self::Item, Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
iterator_try_reduce
)1.0.0 · Source§fn all<F>(&mut self, f: F) -> bool
fn all<F>(&mut self, f: F) -> bool
1.0.0 · Source§fn any<F>(&mut self, f: F) -> bool
fn any<F>(&mut self, f: F) -> bool
1.0.0 · Source§fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
1.30.0 · Source§fn find_map<B, F>(&mut self, f: F) -> Option<B>
fn find_map<B, F>(&mut self, f: F) -> Option<B>
Source§fn try_find<R>(
&mut self,
f: impl FnMut(&Self::Item) -> R,
) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
fn try_find<R>( &mut self, f: impl FnMut(&Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
try_find
)1.0.0 · Source§fn position<P>(&mut self, predicate: P) -> Option<usize>
fn position<P>(&mut self, predicate: P) -> Option<usize>
1.0.0 · Source§fn rposition<P>(&mut self, predicate: P) -> Option<usize>
fn rposition<P>(&mut self, predicate: P) -> Option<usize>
1.0.0 · Source§fn max(self) -> Option<Self::Item>
fn max(self) -> Option<Self::Item>
1.0.0 · Source§fn min(self) -> Option<Self::Item>
fn min(self) -> Option<Self::Item>
1.6.0 · Source§fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
1.15.0 · Source§fn max_by<F>(self, compare: F) -> Option<Self::Item>
fn max_by<F>(self, compare: F) -> Option<Self::Item>
1.6.0 · Source§fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
1.15.0 · Source§fn min_by<F>(self, compare: F) -> Option<Self::Item>
fn min_by<F>(self, compare: F) -> Option<Self::Item>
1.0.0 · Source§fn rev(self) -> Rev<Self>where
Self: Sized + DoubleEndedIterator,
fn rev(self) -> Rev<Self>where
Self: Sized + DoubleEndedIterator,
1.0.0 · Source§fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
1.36.0 · Source§fn copied<'a, T>(self) -> Copied<Self>
fn copied<'a, T>(self) -> Copied<Self>
Source§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 · Source§fn product<P>(self) -> P
fn product<P>(self) -> P
Source§fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
iter_order_by
)Iterator
with those
of another with respect to the specified comparison function. Read more1.5.0 · Source§fn partial_cmp<I>(self, other: I) -> Option<Ordering>
fn partial_cmp<I>(self, other: I) -> Option<Ordering>
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 moreSource§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 moreSource§fn eq_by<I, F>(self, other: I, eq: F) -> bool
fn eq_by<I, F>(self, other: I, eq: F) -> bool
iter_order_by
)1.5.0 · Source§fn lt<I>(self, other: I) -> bool
fn lt<I>(self, other: I) -> bool
Iterator
are lexicographically
less than those of another. Read more1.5.0 · Source§fn le<I>(self, other: I) -> bool
fn le<I>(self, other: I) -> bool
Iterator
are lexicographically
less or equal to those of another. Read more1.5.0 · Source§fn gt<I>(self, other: I) -> bool
fn gt<I>(self, other: I) -> bool
Iterator
are lexicographically
greater than those of another. Read more1.5.0 · Source§fn ge<I>(self, other: I) -> bool
fn ge<I>(self, other: I) -> bool
Iterator
are lexicographically
greater than or equal to those of another. Read more