pub unsafe trait Pessimize {
// Required methods
fn hide(self) -> Self;
fn assume_read(&self);
fn assume_accessed(&mut self);
fn assume_accessed_imut(&self);
}Expand description
Optimization barriers provided by this crate
This trait is implemented for both value and reference types, which can
lead to unexpected method syntax semantics (you expected to call the
Pessimize impl of T, and you actually called that of &T). As a result,
it is strongly recommended to use the optimization barriers via the free
functions provided at the crate root, rather than via method syntax.
Implementing Pessimize requires fairly tricky code. Consider implementing
PessimizeCast and BorrowPessimize instead, which is slightly easier, and
will lead to an automatic Pessimize implementation.
§Safety
Unsafe code may rely on hide() behaving as an identity function (returning
the input value unaltered) and assume_xyz() not altering anything even if
the type is internally mutable.
Required Methods§
Sourcefn assume_read(&self)
fn assume_read(&self)
See pessimize::assume_read() for documentation
Sourcefn assume_accessed(&mut self)
fn assume_accessed(&mut self)
See pessimize::assume_accessed() for documentation
Sourcefn assume_accessed_imut(&self)
fn assume_accessed_imut(&self)
See pessimize::assume_accessed_imut() for documentation
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
Source§impl Pessimize for f32
impl Pessimize for f32
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for f64
impl Pessimize for f64
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for i8
impl Pessimize for i8
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for i16
impl Pessimize for i16
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for i32
impl Pessimize for i32
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for i64
impl Pessimize for i64
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for isize
impl Pessimize for isize
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for u8
impl Pessimize for u8
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for u16
impl Pessimize for u16
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for u32
impl Pessimize for u32
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for u64
impl Pessimize for u64
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for ()
impl Pessimize for ()
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for usize
impl Pessimize for usize
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for float64x1_t
Available with target feature neon only.
impl Pessimize for float64x1_t
neon only.fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for float64x2_t
Available with target feature neon only.
impl Pessimize for float64x2_t
neon only.fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl Pessimize for System
Available on crate feature std only.
impl Pessimize for System
std only.fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<A1: Pessimize, A2: Pessimize, A3: Pessimize, A4: Pessimize, A5: Pessimize, A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A1, A2, A3, A4, A5, A6, A7, A8)
impl<A1: Pessimize, A2: Pessimize, A3: Pessimize, A4: Pessimize, A5: Pessimize, A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A1, A2, A3, A4, A5, A6, A7, A8)
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<A2: Pessimize, A3: Pessimize, A4: Pessimize, A5: Pessimize, A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A2, A3, A4, A5, A6, A7, A8)
impl<A2: Pessimize, A3: Pessimize, A4: Pessimize, A5: Pessimize, A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A2, A3, A4, A5, A6, A7, A8)
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<A3: Pessimize, A4: Pessimize, A5: Pessimize, A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A3, A4, A5, A6, A7, A8)
impl<A3: Pessimize, A4: Pessimize, A5: Pessimize, A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A3, A4, A5, A6, A7, A8)
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<A4: Pessimize, A5: Pessimize, A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A4, A5, A6, A7, A8)
impl<A4: Pessimize, A5: Pessimize, A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A4, A5, A6, A7, A8)
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<A5: Pessimize, A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A5, A6, A7, A8)
impl<A5: Pessimize, A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A5, A6, A7, A8)
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A6, A7, A8)
impl<A6: Pessimize, A7: Pessimize, A8: Pessimize> Pessimize for (A6, A7, A8)
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<A7: Pessimize, A8: Pessimize> Pessimize for (A7, A8)
impl<A7: Pessimize, A8: Pessimize> Pessimize for (A7, A8)
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<A8: Pessimize> Pessimize for (A8,)
impl<A8: Pessimize> Pessimize for (A8,)
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<T: Copy + Pessimize> Pessimize for Cell<T>
impl<T: Copy + Pessimize> Pessimize for Cell<T>
fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<T: Pointee + ?Sized> Pessimize for *const T
Available on crate feature nightly only.
impl<T: Pointee + ?Sized> Pessimize for *const T
nightly only.fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<T: Pessimize + Read> Pessimize for Take<T>
Available on crate feature std and 64-bit only.
impl<T: Pessimize + Read> Pessimize for Take<T>
std and 64-bit only.fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<T: Pessimize> Pessimize for Cursor<T>
Available on crate feature std and 64-bit only.
impl<T: Pessimize> Pessimize for Cursor<T>
std and 64-bit only.fn hide(self) -> Self
fn assume_read(&self)
fn assume_accessed(&mut self)
fn assume_accessed_imut(&self)
Source§impl<T: ?Sized> Pessimize for DynMetadata<T>
Available on crate feature nightly only.
impl<T: ?Sized> Pessimize for DynMetadata<T>
nightly only.