1.0.0[−][src]Trait geng::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
(whereT
is neither a reference nor a raw pointer) is equivalent to*Deref::deref(&x)
. - Values of type
&T
are coerced to values of type&U
T
implicitly 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<T, F> Deref for SyncLazy<T, F> where
F: FnOnce() -> T,
[src]
F: FnOnce() -> T,
impl Deref for CString
[src]
impl Deref for OsString
[src]
impl<T> Deref for AssertUnwindSafe<T>
[src]
impl<'_, T> Deref for RwLockWriteGuard<'_, T> where
T: ?Sized,
[src]
T: ?Sized,
impl Deref for PathBuf
[src]
impl<'_, T> Deref for &'_ mut T where
T: ?Sized,
[src]
T: ?Sized,
impl<T, F> Deref for Lazy<T, F> where
F: FnOnce() -> T,
[src]
F: FnOnce() -> T,
impl<'a, 'f> Deref for VaList<'a, 'f> where
'f: 'a,
[src]
'f: 'a,
type Target = VaListImpl<'f>
pub fn deref(&self) -> &VaListImpl<'f>
[src]
impl<'_, T> Deref for &'_ T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Deref for Vec<T>
[src]
impl<T, A> Deref for Box<T, A> where
A: AllocRef,
T: ?Sized,
[src]
A: AllocRef,
T: ?Sized,
impl Deref for String
[src]
impl<'_, B> Deref for Cow<'_, B> where
B: ToOwned + ?Sized,
[src]
B: ToOwned + ?Sized,
impl<'_, T> Deref for PeekMut<'_, T> where
T: Ord,
[src]
T: Ord,
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<'input, Endian> Deref for EndianSlice<'input, Endian> where
Endian: Endianity,
Endian: Endianity,
impl<T> Deref for VertexBuffer<T> where
T: Vertex,
[src]
T: Vertex,
impl<'a, T> Deref for VertexBufferSlice<'a, T> where
T: 'a + Vertex,
[src]
T: 'a + Vertex,
impl<'a> Deref for Framebuffer<'a>
[src]
type Target = FramebufferRead<'a>
pub fn deref(&self) -> &<Framebuffer<'a> as Deref>::Target
[src]
impl<T, W> Deref for ContextWrapper<T, W> where
T: ContextCurrentState,
[src]
T: ContextCurrentState,
impl Deref for Window
impl<T> Deref for EventLoop<T>
impl<'a, T> Deref for XSmartPointer<'a, T>
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 RwLockUpgradableReadGuard<'a, R, T> where
R: 'a + RawRwLockUpgrade,
T: 'a + ?Sized,
R: 'a + RawRwLockUpgrade,
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 RwLockWriteGuard<'a, R, T> where
R: 'a + RawRwLock,
T: 'a + ?Sized,
R: 'a + RawRwLock,
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, T> Deref for MappedRwLockWriteGuard<'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, 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 RwLockReadGuard<'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<T> Deref for Symbol<T>
impl<'lib, T> Deref for Symbol<'lib, T>
impl Deref for Display
impl<I> Deref for Attached<I> where
I: Interface,
I: Interface,
impl<I> Deref for Main<I> where
I: Interface + AsRef<Proxy<I>> + From<Proxy<I>>,
I: Interface + AsRef<Proxy<I>> + From<Proxy<I>>,
impl Deref for WAYLAND_CLIENT_OPTION
impl Deref for WAYLAND_CLIENT_HANDLE
impl Deref for WAYLAND_EGL_HANDLE
impl Deref for WAYLAND_EGL_OPTION
impl Deref for MmapMut
[src]
impl Deref for Mmap
[src]
impl Deref for CursorImageBuffer
impl<T> Deref for Owned<T>
impl<'a, T> Deref for ShardedLockWriteGuard<'a, T> where
T: ?Sized,
T: ?Sized,
impl<'a, T> Deref for ShardedLockReadGuard<'a, T> where
T: ?Sized,
T: ?Sized,
impl<T> Deref for CachePadded<T>
impl Deref for UnixReady
[src]
impl Deref for IoVec
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]
pub 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<'_, T> Deref for ShardedLockReadGuard<'_, T> where
T: ?Sized,
T: ?Sized,
impl<T> Deref for CachePadded<T>
impl<'_, T> Deref for ShardedLockWriteGuard<'_, T> where
T: ?Sized,
T: ?Sized,
impl<T> Deref for Owned<T> where
T: Pointable + ?Sized,
T: Pointable + ?Sized,
impl Deref for BytesMut
[src]
impl Deref for Bytes
[src]
impl<T, N> Deref for GenericArray<T, N> where
N: ArrayLength<T>,
N: ArrayLength<T>,
impl<'s, T> Deref for SliceVec<'s, T>
impl<A> Deref for ArrayVec<A> where
A: Array,
A: Array,
impl<A> Deref for TinyVec<A> where
A: Array,
A: Array,
impl<'a> Deref for Selem<'a>
impl Deref for MilliBel
impl<T> Deref for SliceDeque<T>
impl<A> Deref for TinyVec<A> where
A: Array,
A: Array,
impl<A> Deref for ArrayVec<A> where
A: Array,
Loading content...A: Array,
Implementors
impl Deref for Error
[src]
type Target = dyn Error + 'static + Sync + Send
pub fn deref(&self) -> &<Error as Deref>::Target
[src]
impl Deref for Slider
[src]
type Target = WidgetCore
fn deref(&self) -> &WidgetCore
[src]
impl<'_> Deref for WakerRef<'_>
[src]
impl<'_, T> Deref for geng::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<'_, T, U> Deref for geng::prelude::futures::lock::MappedMutexGuard<'_, T, U> where
T: ?Sized,
U: ?Sized,
[src]
T: ?Sized,
U: ?Sized,
impl<'a> Deref for IoSlice<'a>
[src]
impl<'a> Deref for IoSliceMut<'a>
[src]
impl<'a> Deref for Column<'a>
[src]
impl<'a> Deref for Row<'a>
[src]
impl<'a> Deref for Stack<'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,
type Target = S
pub fn deref(&self) -> &<BlockingStream<S> as Deref>::TargetⓘNotable traits for BlockingStream<S>
impl<S> Iterator for BlockingStream<S> where
S: Unpin + Stream, type Item = <S as Stream>::Item;
[src]
Notable traits for BlockingStream<S>
impl<S> Iterator for BlockingStream<S> where
S: Unpin + Stream, type Item = <S as Stream>::Item;
impl<T> Deref for ManuallyDrop<T> where
T: ?Sized,
[src]
T: ?Sized,
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::prelude::once_cell::sync::Lazy<T, F> where
F: FnOnce() -> T,
F: FnOnce() -> T,
impl<T, F> Deref for geng::prelude::once_cell::unsync::Lazy<T, F> where
F: FnOnce() -> T,
F: FnOnce() -> T,