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
sourceimpl<T, const N: usize> StaticRc<T, N, N>
impl<T, const N: usize> StaticRc<T, N, N>
sourcepub fn new(value: T) -> Selfwhere
(): Sized,
pub fn new(value: T) -> Selfwhere
(): Sized,
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>where
(): Sized,
pub fn pin(value: T) -> Pin<Self>where
(): Sized,
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));
sourceimpl<T: ?Sized, const N: usize> StaticRc<T, N, N>
impl<T: ?Sized, const N: usize> StaticRc<T, N, N>
sourceimpl<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>) -> Selfwhere
(): Sized,
pub unsafe fn from_raw(pointer: NonNull<T>) -> Selfwhere
(): Sized,
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>ⓘNotable traits for StaticRc<F, N, N>impl<F: ?Sized + Future + Unpin, const N: usize> Future for StaticRc<F, N, N> type Output = F::Output;impl<I: Iterator + ?Sized, const N: usize> Iterator for StaticRc<I, N, N> type Item = I::Item;
where
(): Sized,
((), ()): Sized,
pub fn adjust<const N: usize, const D: usize>(this: Self) -> StaticRc<T, N, D>ⓘNotable traits for StaticRc<F, N, N>impl<F: ?Sized + Future + Unpin, const N: usize> Future for StaticRc<F, N, N> type Output = F::Output;impl<I: Iterator + ?Sized, const N: usize> Iterator for StaticRc<I, N, N> type Item = I::Item;
where
(): Sized,
((), ()): Sized,
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>ⓘNotable traits for StaticRcRef<'a, F, N, N>impl<'a, F: ?Sized + Future + Unpin, const N: usize> Future for StaticRcRef<'a, F, N, N> type Output = F::Output;impl<'a, I: Iterator + ?Sized, const N: usize> Iterator for StaticRcRef<'a, I, N, N> type Item = I::Item;
where
(): Sized,
pub fn as_rcref<'a>(this: &'a mut Self) -> StaticRcRef<'a, T, NUM, DEN>ⓘNotable traits for StaticRcRef<'a, F, N, N>impl<'a, F: ?Sized + Future + Unpin, const N: usize> Future for StaticRcRef<'a, F, N, N> type Output = F::Output;impl<'a, I: Iterator + ?Sized, const N: usize> Iterator for StaticRcRef<'a, I, N, N> type Item = I::Item;
where
(): Sized,
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>)where
(): Sized,
(): Sized,
((), ()): Sized,
pub fn split<const A: usize, const B: usize>(
this: Self
) -> (StaticRc<T, A, DEN>, StaticRc<T, B, DEN>)where
(): Sized,
(): Sized,
((), ()): Sized,
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]where
((), ()): Sized,
(): Sized,
pub fn split_array<const N: usize, const DIM: usize>(
this: Self
) -> [StaticRc<T, N, DEN>; DIM]where
((), ()): Sized,
(): Sized,
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>
) -> Selfwhere
((), ()): Sized,
pub fn join<const A: usize, const B: usize>(
left: StaticRc<T, A, DEN>,
right: StaticRc<T, B, DEN>
) -> Selfwhere
((), ()): Sized,
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>
) -> Selfwhere
((), ()): Sized,
pub unsafe fn join_unchecked<const A: usize, const B: usize>(
left: StaticRc<T, A, DEN>,
right: StaticRc<T, B, DEN>
) -> Selfwhere
((), ()): Sized,
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]
) -> Selfwhere
(): Sized,
((), ()): Sized,
pub fn join_array<const N: usize, const DIM: usize>(
array: [StaticRc<T, N, DEN>; DIM]
) -> Selfwhere
(): Sized,
((), ()): Sized,
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]
) -> Selfwhere
(): Sized,
((), ()): Sized,
pub unsafe fn join_array_unchecked<const N: usize, const DIM: usize>(
array: [StaticRc<T, N, DEN>; DIM]
) -> Selfwhere
(): Sized,
((), ()): Sized,
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
sourceimpl<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>
sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
sourceimpl<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>
sourceimpl<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>
sourcefn next_back(&mut self) -> Option<I::Item>
fn next_back(&mut self) -> Option<I::Item>
sourcefn 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 moresourcefn advance_back_by(&mut self, n: usize) -> Result<(), usize>
fn advance_back_by(&mut self, n: usize) -> Result<(), usize>
iter_advance_by
)n
elements. Read more1.27.0 · sourcefn 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 moresourceimpl<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>
sourceimpl<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>
sourceimpl<T, const N: usize> FromIterator<T> for StaticRc<[T], N, N>
impl<T, const N: usize> FromIterator<T> for StaticRc<[T], N, N>
sourcefn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
sourceimpl<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>
sourcefn next(&mut self) -> Option<I::Item>
fn next(&mut self) -> Option<I::Item>
sourcefn size_hint(&self) -> (usize, Option<usize>)
fn size_hint(&self) -> (usize, Option<usize>)
sourcefn nth(&mut self, n: usize) -> Option<I::Item>
fn nth(&mut self, n: usize) -> Option<I::Item>
n
th element of the iterator. Read moresourcefn 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 · sourcefn count(self) -> usizewhere
Self: Sized,
fn count(self) -> usizewhere
Self: Sized,
sourcefn advance_by(&mut self, n: usize) -> Result<(), usize>
fn advance_by(&mut self, n: usize) -> Result<(), usize>
iter_advance_by
)n
elements. Read more1.28.0 · sourcefn step_by(self, step: usize) -> StepBy<Self>where
Self: Sized,
fn step_by(self, step: usize) -> StepBy<Self>where
Self: Sized,
1.0.0 · sourcefn 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 · sourcefn 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,
sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn enumerate(self) -> Enumerate<Self>where
Self: Sized,
fn enumerate(self) -> Enumerate<Self>where
Self: Sized,
1.0.0 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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,
1.0.0 · sourcefn 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 · sourcefn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
1.0.0 · sourcefn collect<B>(self) -> Bwhere
B: FromIterator<Self::Item>,
Self: Sized,
fn collect<B>(self) -> Bwhere
B: FromIterator<Self::Item>,
Self: Sized,
sourcefn 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 · sourcefn 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,
sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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,
sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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>,
sourcefn 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 · sourcefn 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.6.0 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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>,
sourcefn 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 · sourcefn sum<S>(self) -> Swhere
Self: Sized,
S: Sum<Self::Item>,
fn sum<S>(self) -> Swhere
Self: Sized,
S: Sum<Self::Item>,
1.11.0 · sourcefn product<P>(self) -> Pwhere
Self: Sized,
P: Product<Self::Item>,
fn product<P>(self) -> Pwhere
Self: Sized,
P: Product<Self::Item>,
sourcefn 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 · sourcefn 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,
sourcefn 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 · sourcefn 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,
sourcefn 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
)1.5.0 · sourcefn 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,
1.5.0 · sourcefn 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 · sourcefn 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 · sourcefn 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 · sourcefn 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 moresourcefn 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
)sourcefn is_sorted_by_key<F, K>(self, f: F) -> boolwhere
Self: Sized,
F: FnMut(Self::Item) -> K,
K: PartialOrd<K>,
fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere
Self: Sized,
F: FnMut(Self::Item) -> K,
K: PartialOrd<K>,
is_sorted
)sourceimpl<T: ?Sized + Ord, const NUM: usize, const DEN: usize> Ord for StaticRc<T, NUM, DEN>
impl<T: ?Sized + Ord, const NUM: usize, const DEN: usize> Ord for StaticRc<T, NUM, DEN>
1.21.0 · sourcefn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 · sourcefn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
1.50.0 · sourcefn clamp(self, min: Self, max: Self) -> Selfwhere
Self: Sized + PartialOrd<Self>,
fn clamp(self, min: Self, max: Self) -> Selfwhere
Self: Sized + PartialOrd<Self>,
sourceimpl<T, const NUM: usize, const DEN: usize, const N: usize, const D: usize> PartialEq<StaticRc<T, N, D>> for StaticRc<T, NUM, DEN>where
T: ?Sized + PartialEq<T>,
impl<T, const NUM: usize, const DEN: usize, const N: usize, const D: usize> PartialEq<StaticRc<T, N, D>> for StaticRc<T, NUM, DEN>where
T: ?Sized + PartialEq<T>,
sourceimpl<T, const NUM: usize, const DEN: usize, const N: usize, const D: usize> PartialOrd<StaticRc<T, N, D>> for StaticRc<T, NUM, DEN>where
T: ?Sized + PartialOrd<T>,
impl<T, const NUM: usize, const DEN: usize, const N: usize, const D: usize> PartialOrd<StaticRc<T, N, D>> for StaticRc<T, NUM, DEN>where
T: ?Sized + PartialOrd<T>,
sourcefn partial_cmp(&self, other: &StaticRc<T, N, D>) -> Option<Ordering>
fn partial_cmp(&self, other: &StaticRc<T, N, D>) -> Option<Ordering>
sourcefn le(&self, other: &StaticRc<T, N, D>) -> bool
fn le(&self, other: &StaticRc<T, N, D>) -> bool
self
and other
) and is used by the <=
operator. Read more