Struct cfx_storage::utils::guarded_value::NonCopy
source · pub struct NonCopy<T: ?Sized>(pub T);
Expand description
To prevent automatic copy from leaking guarded value. Please always wrap the value with NonCopy if the value is Copy otherwise it’s so easy to accidentally copy without notice, e.g. in matching arms, if let clauses.
Tuple Fields§
§0: T
Trait Implementations§
source§impl<T: ?Sized> Deref for NonCopy<T>
impl<T: ?Sized> Deref for NonCopy<T>
Ideally, we should also deref to the next level like above. However, there can be GuardedValue like Option<&’a Target>, for which we can’t really do anything more, unless we introduce concept like lifetime coercion classes.
The goal for all implementations here is to make it hard enough to do something wrong by accident, but still keep it simple.
Auto Trait Implementations§
impl<T> Freeze for NonCopy<T>
impl<T> RefUnwindSafe for NonCopy<T>where
T: RefUnwindSafe + ?Sized,
impl<T> Send for NonCopy<T>
impl<T> Sync for NonCopy<T>
impl<T> Unpin for NonCopy<T>
impl<T> UnwindSafe for NonCopy<T>where
T: UnwindSafe + ?Sized,
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
source§impl<D, T> DerefMutPlusSelf for D
impl<D, T> DerefMutPlusSelf for D
source§impl<D, T> DerefPlusSelf for D
impl<D, T> DerefPlusSelf for D
source§impl<T> ElementSatisfy<ElementNoConstrain> for T
impl<T> ElementSatisfy<ElementNoConstrain> for T
fn to_constrain_object(&self) -> &ElementNoConstrain
fn to_constrain_object_mut(&mut self) -> &mut ElementNoConstrain
source§impl<R> Rng for R
impl<R> Rng for R
source§fn random<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
fn random<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
Return a random value via the
StandardUniform
distribution. Read moresource§fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>
fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>
source§fn random_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
fn random_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
Generate a random value in the given range. Read more
source§fn random_bool(&mut self, p: f64) -> bool
fn random_bool(&mut self, p: f64) -> bool
Return a bool with a probability
p
of being true. Read moresource§fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
Return a bool with a probability of
numerator/denominator
of being
true. Read moresource§fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
Sample a new value, using the given distribution. Read more
source§fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>where
D: Distribution<T>,
Self: Sized,
fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>where
D: Distribution<T>,
Self: Sized,
Create an iterator that generates values using the given distribution. Read more
source§fn gen<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
fn gen<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
👎Deprecated since 0.9.0: Renamed to
random
to avoid conflict with the new gen
keyword in Rust 2024.Alias for
Rng::random
.source§fn gen_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
fn gen_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
👎Deprecated since 0.9.0: Renamed to
random_range
Alias for
Rng::random_range
.source§impl<R> TryRngCore for R
impl<R> TryRngCore for R
§type Error = Infallible
type Error = Infallible
The type returned in the event of a RNG error.
source§fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
Return the next random
u32
.source§fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
Return the next random
u64
.source§fn try_fill_bytes(
&mut self,
dst: &mut [u8]
) -> Result<(), <R as TryRngCore>::Error>
fn try_fill_bytes( &mut self, dst: &mut [u8] ) -> Result<(), <R as TryRngCore>::Error>
Fill
dest
entirely with random data.source§fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>
fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>
Wrap RNG with the
UnwrapMut
wrapper.source§fn read_adapter(&mut self) -> RngReadAdapter<'_, Self>where
Self: Sized,
fn read_adapter(&mut self) -> RngReadAdapter<'_, Self>where
Self: Sized,
Convert an
RngCore
to a RngReadAdapter
.