#[repr(transparent)]pub struct TotallyOrdered<F: TotallyOrderable>(pub F);Expand description
An ABI-transparent newtype wrapper around types that adds Ord + Eq to TotallyOrderable types (f32 and f64).
Tuple Fields§
§0: FImplementations§
Source§impl<F: TotallyOrderable> TotallyOrdered<F>
impl<F: TotallyOrderable> TotallyOrdered<F>
Sourcepub fn new_slice(s: &[F]) -> &[Self]
pub fn new_slice(s: &[F]) -> &[Self]
Creates a wrapped slice without copying data.
Not implemented as From<&[F]> for &[Self] as
slices are always foreign.
Follows the usual borrowing rules:
ⓘ
let mut values = [1.0, 2.0, 3.0];
let values_to = TotallyOrdered::new_slice(&values);
values[2] = 4.0; // error, can't mutate while borrowed
assert_eq!(values_to[2], TotallyOrdered::new(3.0));Sourcepub fn new_slice_mut(s: &mut [F]) -> &mut [Self]
pub fn new_slice_mut(s: &mut [F]) -> &mut [Self]
Creates a mutable wrapped slice without copying data.
Not implemented as From<&mut [F]> for &mut [Self] as
slices are always foreign.
Follows the usual borrowing rules:
ⓘ
let mut values = [3.0, 2.0, 1.0];
let values_to = TotallyOrdered::new_slice_mut(&mut values);
assert_eq!(values[2], 1.0); // error, can't borrow while mutably borrowed
values_to.sort();Trait Implementations§
Source§impl<F: Clone + TotallyOrderable> Clone for TotallyOrdered<F>
impl<F: Clone + TotallyOrderable> Clone for TotallyOrdered<F>
Source§fn clone(&self) -> TotallyOrdered<F>
fn clone(&self) -> TotallyOrdered<F>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<F: Debug + TotallyOrderable> Debug for TotallyOrdered<F>
impl<F: Debug + TotallyOrderable> Debug for TotallyOrdered<F>
Source§impl<F: Default + TotallyOrderable> Default for TotallyOrdered<F>
impl<F: Default + TotallyOrderable> Default for TotallyOrdered<F>
Source§fn default() -> TotallyOrdered<F>
fn default() -> TotallyOrdered<F>
Returns the “default value” for a type. Read more
Source§impl<'a, F: TotallyOrderable> From<&'a F> for &'a TotallyOrdered<F>
impl<'a, F: TotallyOrderable> From<&'a F> for &'a TotallyOrdered<F>
Source§fn from(v: &F) -> Self
fn from(v: &F) -> Self
The explicit lifetime bound ensures that both From
ⓘ
let mut value : f32 = 1.0;
let value_to : &TotallyOrdered<_> = From::from(&value);
value = 2.0; // error, can't mutate while borrowed
assert_eq!(*value_to, TotallyOrdered::new(1.0));and Into
ⓘ
let mut value : f32 = 1.0;
let value_to : &TotallyOrdered<_> = (&value).into();
value = 2.0; // error, can't mutate while borrowed
assert_eq!(*value_to, TotallyOrdered::new(1.0));respect the lifetime of the borrow on the original value.
Source§impl<'a, F: TotallyOrderable> From<&'a mut F> for &'a mut TotallyOrdered<F>
impl<'a, F: TotallyOrderable> From<&'a mut F> for &'a mut TotallyOrdered<F>
Source§fn from(v: &mut F) -> Self
fn from(v: &mut F) -> Self
The explicit lifetime bound ensures that both From
ⓘ
let mut value : f32 = 1.0;
let value_to : &mut TotallyOrdered<_> = From::from(&mut value);
assert_eq!(value, 1.0); // error, can't borrow while mutably borrowed
*value_to = TotallyOrdered::new(2.0);and Into
ⓘ
let mut value : f32 = 1.0;
let value_to : &mut TotallyOrdered<_> = (&mut value).into();
assert_eq!(value, 1.0); // error, can't borrow while mutably borrowed
*value_to = TotallyOrdered::new(2.0);respect the lifetime of the mutable borrow on the original value.
Source§impl<F: TotallyOrderable> From<F> for TotallyOrdered<F>
impl<F: TotallyOrderable> From<F> for TotallyOrdered<F>
Source§impl<F: TotallyOrderable> Hash for TotallyOrdered<F>
impl<F: TotallyOrderable> Hash for TotallyOrdered<F>
Source§impl<F: TotallyOrderable> Ord for TotallyOrdered<F>
impl<F: TotallyOrderable> Ord for TotallyOrdered<F>
Source§impl<F: TotallyOrderable> PartialEq for TotallyOrdered<F>
impl<F: TotallyOrderable> PartialEq for TotallyOrdered<F>
Source§impl<F: TotallyOrderable> PartialOrd for TotallyOrdered<F>
impl<F: TotallyOrderable> PartialOrd for TotallyOrdered<F>
impl<F: Copy + TotallyOrderable> Copy for TotallyOrdered<F>
impl<F: TotallyOrderable> Eq for TotallyOrdered<F>
Auto Trait Implementations§
impl<F> Freeze for TotallyOrdered<F>where
F: Freeze,
impl<F> RefUnwindSafe for TotallyOrdered<F>where
F: RefUnwindSafe,
impl<F> Send for TotallyOrdered<F>where
F: Send,
impl<F> Sync for TotallyOrdered<F>where
F: Sync,
impl<F> Unpin for TotallyOrdered<F>where
F: Unpin,
impl<F> UnwindSafe for TotallyOrdered<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more