[−][src]Trait evmap::shallow_copy::ShallowCopy
Types that implement this trait can be cheaply copied by (potentially) aliasing the data they
contain. Only the last shallow copy will be dropped -- all others will be silently leaked
(with mem::forget
).
To implement this trait for your own Copy
type, write:
#[derive(Copy, Clone)] struct T; impl ShallowCopy for T { unsafe fn shallow_copy(&mut self) -> Self { *self } }
If you have a non-Copy
type, the value returned by shallow_copy
should point to the same
data as the &mut self
, and it should be safe to mem::forget
either of the copies as long as
the other is dropped normally afterwards.
Required methods
unsafe fn shallow_copy(&mut self) -> Self
Perform an aliasing copy of this value.
The use of this method is only safe if the values involved are never mutated, and only
one of the copies is dropped; the remaining copies must be forgotten with mem::forget
.
Implementations on Foreign Types
impl<T> ShallowCopy for Arc<T> where
T: ?Sized,
[src]
T: ?Sized,
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<T> ShallowCopy for Rc<T> where
T: ?Sized,
[src]
T: ?Sized,
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<T> ShallowCopy for Box<T> where
T: ?Sized,
[src]
T: ?Sized,
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for String
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<T> ShallowCopy for Vec<T>
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<'a, T> ShallowCopy for &'a T where
T: ?Sized,
[src]
T: ?Sized,
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for ()
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for bool
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for char
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for usize
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for u8
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for u16
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for u32
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for u64
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for u128
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for isize
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for i8
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for i16
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for i32
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for i64
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for i128
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for f32
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl ShallowCopy for f64
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy> ShallowCopy for (A,)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy> ShallowCopy for (A, B)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy> ShallowCopy for (A, B, C)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy> ShallowCopy for (A, B, C, D)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy, E: ShallowCopy> ShallowCopy for (A, B, C, D, E)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy, E: ShallowCopy, F: ShallowCopy> ShallowCopy for (A, B, C, D, E, F)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy, E: ShallowCopy, F: ShallowCopy, G: ShallowCopy> ShallowCopy for (A, B, C, D, E, F, G)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy, E: ShallowCopy, F: ShallowCopy, G: ShallowCopy, H: ShallowCopy> ShallowCopy for (A, B, C, D, E, F, G, H)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy, E: ShallowCopy, F: ShallowCopy, G: ShallowCopy, H: ShallowCopy, I: ShallowCopy> ShallowCopy for (A, B, C, D, E, F, G, H, I)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy, E: ShallowCopy, F: ShallowCopy, G: ShallowCopy, H: ShallowCopy, I: ShallowCopy, J: ShallowCopy> ShallowCopy for (A, B, C, D, E, F, G, H, I, J)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy, E: ShallowCopy, F: ShallowCopy, G: ShallowCopy, H: ShallowCopy, I: ShallowCopy, J: ShallowCopy, K: ShallowCopy> ShallowCopy for (A, B, C, D, E, F, G, H, I, J, K)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy, E: ShallowCopy, F: ShallowCopy, G: ShallowCopy, H: ShallowCopy, I: ShallowCopy, J: ShallowCopy, K: ShallowCopy, L: ShallowCopy> ShallowCopy for (A, B, C, D, E, F, G, H, I, J, K, L)
[src]
unsafe fn shallow_copy(&mut self) -> Self
[src]
Implementors
impl<T> ShallowCopy for CopyValue<T> where
T: Copy,
[src]
T: Copy,