1.0.0[−][src]Trait geng_core::prelude::structopt::lazy_static::__Deref
Used for immutable dereferencing operations, like *v.
In addition to being used for explicit dereferencing operations with the
(unary) * operator in immutable contexts, Deref is also used implicitly
by the compiler in many circumstances. This mechanism is called
'Deref coercion'. In mutable contexts, DerefMut is used.
Implementing Deref for smart pointers makes accessing the data behind them
convenient, which is why they implement Deref. On the other hand, the
rules regarding Deref and DerefMut were designed specifically to
accommodate smart pointers. Because of this, Deref should only be
implemented for smart pointers to avoid confusion.
For similar reasons, this trait should never fail. Failure during
dereferencing can be extremely confusing when Deref is invoked implicitly.
More on Deref coercion
If T implements Deref<Target = U>, and x is a value of type T, then:
- In immutable contexts,
*x(whereTis neither a reference nor a raw pointer) is equivalent to*Deref::deref(&x). - Values of type
&Tare coerced to values of type&U Timplicitly implements all the (immutable) methods of the typeU.
For more details, visit the chapter in The Rust Programming Language as well as the reference sections on the dereference operator, method resolution and type coercions.
Examples
A struct with a single field which is accessible by dereferencing the struct.
use std::ops::Deref; struct DerefExample<T> { value: T } impl<T> Deref for DerefExample<T> { type Target = T; fn deref(&self) -> &Self::Target { &self.value } } let x = DerefExample { value: 'a' }; assert_eq!('a', *x);
Associated Types
Loading content...Required methods
Loading content...Implementations on Foreign Types
impl<'_, T> Deref for MutexGuard<'_, T> where
T: ?Sized, [src]
T: ?Sized,
impl<'_, T> Deref for RwLockReadGuard<'_, T> where
T: ?Sized, [src]
T: ?Sized,
impl Deref for OsString[src]
impl<'_, T> Deref for RwLockWriteGuard<'_, T> where
T: ?Sized, [src]
T: ?Sized,
impl Deref for PathBuf[src]
impl<T> Deref for AssertUnwindSafe<T>[src]
impl Deref for CString[src]
impl<'_, T> Deref for &'_ mut T where
T: ?Sized, [src]
T: ?Sized,
impl<T> Deref for ManuallyDrop<T> where
T: ?Sized, [src]
T: ?Sized,
impl<'_, T> Deref for &'_ T where
T: ?Sized, [src]
T: ?Sized,
impl<'a, 'f> Deref for VaList<'a, 'f> where
'f: 'a, [src]
'f: 'a,
type Target = VaListImpl<'f>
fn deref(&self) -> &VaListImpl<'f>[src]
impl<'_, B> Deref for Cow<'_, B> where
B: ToOwned + ?Sized, [src]
B: ToOwned + ?Sized,
impl Deref for String[src]
impl<T> Deref for Box<T> where
T: ?Sized, [src]
T: ?Sized,
impl<'_, T> Deref for PeekMut<'_, T> where
T: Ord, [src]
T: Ord,
impl<T> Deref for Vec<T>[src]
impl<'input, Endian> Deref for EndianSlice<'input, Endian> where
Endian: Endianity,
Endian: Endianity,
impl<'a, S> Deref for ANSIGenericString<'a, S> where
S: 'a + ToOwned + ?Sized,
<S as ToOwned>::Owned: Debug,
S: 'a + ToOwned + ?Sized,
<S as ToOwned>::Owned: Debug,
impl<'a> Deref for Framebuffer<'a>[src]
type Target = FramebufferRead<'a>
fn deref(&self) -> &<Framebuffer<'a> as Deref>::Target[src]
impl<'a, T> Deref for VertexBufferSlice<'a, T> where
T: 'a + Vertex, [src]
T: 'a + Vertex,
impl<T> Deref for VertexBuffer<T> where
T: Vertex, [src]
T: Vertex,
impl<T, W> Deref for ContextWrapper<T, W> where
T: ContextCurrentState, [src]
T: ContextCurrentState,
impl<T> Deref for EventLoop<T>
impl Deref for Window
impl<'a, T> Deref for XSmartPointer<'a, T>
impl<'a, R, T> Deref for RwLockWriteGuard<'a, R, T> where
R: 'a + RawRwLock,
T: 'a + ?Sized,
R: 'a + RawRwLock,
T: 'a + ?Sized,
impl<'a, R, T> Deref for RwLockReadGuard<'a, R, T> where
R: 'a + RawRwLock,
T: 'a + ?Sized,
R: 'a + RawRwLock,
T: 'a + ?Sized,
impl<'a, R, T> Deref for MappedMutexGuard<'a, R, T> where
R: 'a + RawMutex,
T: 'a + ?Sized,
R: 'a + RawMutex,
T: 'a + ?Sized,
impl<'a, R, G, T> Deref for ReentrantMutexGuard<'a, R, G, T> where
G: 'a + GetThreadId,
R: 'a + RawMutex,
T: 'a + ?Sized,
G: 'a + GetThreadId,
R: 'a + RawMutex,
T: 'a + ?Sized,
impl<'a, R, T> Deref for MappedRwLockReadGuard<'a, R, T> where
R: 'a + RawRwLock,
T: 'a + ?Sized,
R: 'a + RawRwLock,
T: 'a + ?Sized,
impl<'a, R, T> Deref for RwLockUpgradableReadGuard<'a, R, T> where
R: 'a + RawRwLockUpgrade,
T: 'a + ?Sized,
R: 'a + RawRwLockUpgrade,
T: 'a + ?Sized,
impl<'a, R, T> Deref for MutexGuard<'a, R, T> where
R: 'a + RawMutex,
T: 'a + ?Sized,
R: 'a + RawMutex,
T: 'a + ?Sized,
impl<'a, R, G, T> Deref for MappedReentrantMutexGuard<'a, R, G, T> where
G: 'a + GetThreadId,
R: 'a + RawMutex,
T: 'a + ?Sized,
G: 'a + GetThreadId,
R: 'a + RawMutex,
T: 'a + ?Sized,
impl<'a, R, T> Deref for MappedRwLockWriteGuard<'a, R, T> where
R: 'a + RawRwLock,
T: 'a + ?Sized,
R: 'a + RawRwLock,
T: 'a + ?Sized,
impl<T, F, S> Deref for ScopeGuard<T, F, S> where
F: FnOnce(T),
S: Strategy, [src]
F: FnOnce(T),
S: Strategy,
impl<A> Deref for SmallVec<A> where
A: Array,
A: Array,
impl Deref for ThemedPointer
impl Deref for AutoPointer
impl<'lib, T> Deref for Symbol<'lib, T>
impl<T> Deref for Symbol<T>
impl<'a> Deref for SharedBytes<'a>[src]
impl<T> Deref for NotNan<T> where
T: FloatCore,
T: FloatCore,
impl<T> Deref for OrderedFloat<T> where
T: FloatCore,
T: FloatCore,
impl<T> Deref for Owned<T>
impl<'a, T> Deref for ShardedLockWriteGuard<'a, T> where
T: ?Sized,
T: ?Sized,
impl<T> Deref for CachePadded<T>
impl<'a, T> Deref for ShardedLockReadGuard<'a, T> where
T: ?Sized,
T: ?Sized,
impl Deref for Mmap[src]
impl Deref for MmapMut[src]
impl Deref for Display
impl<'a> Deref for CursorImageBuffer<'a>
impl<E> Deref for Source<E> where
E: EventSource,
E: EventSource,
impl Deref for UnixReady[src]
impl Deref for IoVec
impl Deref for WAYLAND_CURSOR_OPTION[src]
impl Deref for WAYLAND_CLIENT_OPTION[src]
impl Deref for WAYLAND_CURSOR_HANDLE[src]
impl Deref for WAYLAND_CLIENT_HANDLE[src]
impl Deref for WAYLAND_EGL_HANDLE[src]
impl Deref for WAYLAND_EGL_OPTION[src]
impl<'lib, T> Deref for Symbol<'lib, T>
impl<T> Deref for Symbol<T>
impl<P, Container> Deref for ImageBuffer<P, Container> where
Container: Deref<Target = [<P as Pixel>::Subpixel]>,
P: Pixel + 'static,
<P as Pixel>::Subpixel: 'static, [src]
Container: Deref<Target = [<P as Pixel>::Subpixel]>,
P: Pixel + 'static,
<P as Pixel>::Subpixel: 'static,
type Target = [<P as Pixel>::Subpixel]
fn deref(&self) -> &<ImageBuffer<P, Container> as Deref>::Target[src]
impl<L, R> Deref for Either<L, R> where
L: Deref,
R: Deref<Target = <L as Deref>::Target>, [src]
L: Deref,
R: Deref<Target = <L as Deref>::Target>,
impl<'a, T> Deref for InputBuffer<'a, T> where
T: Sample,
T: Sample,
impl<'a, T> Deref for OutputBuffer<'a, T> where
T: Sample,
T: Sample,
impl<A> Deref for TinyVec<A> where
A: Array,
A: Array,
impl<A> Deref for ArrayVec<A> where
A: Array,
A: Array,
impl<T> Deref for SliceDeque<T>
Loading content...
Implementors
impl Deref for Error[src]
impl<'_> Deref for WakerRef<'_>[src]
impl<'_, T> Deref for geng_core::prelude::futures::lock::MutexGuard<'_, T> where
T: ?Sized, [src]
T: ?Sized,
impl<'_, T> Deref for Ref<'_, T> where
T: ?Sized, [src]
T: ?Sized,
impl<'_, T> Deref for RefMut<'_, T> where
T: ?Sized, [src]
T: ?Sized,
impl<'a> Deref for IoSlice<'a>[src]
impl<'a> Deref for IoSliceMut<'a>[src]
impl<P> Deref for Pin<P> where
P: Deref, [src]
P: Deref,
impl<S> Deref for BlockingStream<S> where
S: Unpin + Stream, [src]
S: Unpin + Stream,
impl<T> Deref for Arc<T> where
T: ?Sized, [src]
T: ?Sized,
impl<T> Deref for AutoSave<T> where
T: Serialize, [src]
T: Serialize,
impl<T> Deref for Color<T> where
T: ColorComponent, [src]
T: ColorComponent,
impl<T> Deref for Rc<T> where
T: ?Sized, [src]
T: ?Sized,
impl<T> Deref for Vec2<T>[src]
impl<T> Deref for Vec3<T>[src]
impl<T> Deref for Vec4<T>[src]
impl<T, F> Deref for geng_core::prelude::once_cell::sync::Lazy<T, F> where
F: FnOnce() -> T,
F: FnOnce() -> T,
impl<T, F> Deref for geng_core::prelude::once_cell::unsync::Lazy<T, F> where
F: FnOnce() -> T,
F: FnOnce() -> T,