[][src]Trait evmap::shallow_copy::ShallowCopy

pub trait ShallowCopy {
    unsafe fn shallow_copy(&mut self) -> Self;
}

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.

Loading content...

Implementations on Foreign Types

impl<T> ShallowCopy for Arc<T> where
    T: ?Sized
[src]

impl<T> ShallowCopy for Rc<T> where
    T: ?Sized
[src]

impl<T> ShallowCopy for Box<T> where
    T: ?Sized
[src]

impl ShallowCopy for String[src]

impl<T> ShallowCopy for Vec<T>[src]

impl<'a, T> ShallowCopy for &'a T where
    T: ?Sized
[src]

impl ShallowCopy for ()[src]

impl ShallowCopy for bool[src]

impl ShallowCopy for char[src]

impl ShallowCopy for usize[src]

impl ShallowCopy for u8[src]

impl ShallowCopy for u16[src]

impl ShallowCopy for u32[src]

impl ShallowCopy for u64[src]

impl ShallowCopy for u128[src]

impl ShallowCopy for isize[src]

impl ShallowCopy for i8[src]

impl ShallowCopy for i16[src]

impl ShallowCopy for i32[src]

impl ShallowCopy for i64[src]

impl ShallowCopy for i128[src]

impl ShallowCopy for f32[src]

impl ShallowCopy for f64[src]

impl<A: ShallowCopy> ShallowCopy for (A,)[src]

impl<A: ShallowCopy, B: ShallowCopy> ShallowCopy for (A, B)[src]

impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy> ShallowCopy for (A, B, C)[src]

impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy> ShallowCopy for (A, B, C, D)[src]

impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy, E: ShallowCopy> ShallowCopy for (A, B, C, D, E)[src]

impl<A: ShallowCopy, B: ShallowCopy, C: ShallowCopy, D: ShallowCopy, E: ShallowCopy, F: ShallowCopy> ShallowCopy for (A, B, C, D, E, F)[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]

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]

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]

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]

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]

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]

Loading content...

Implementors

impl<T> ShallowCopy for CopyValue<T> where
    T: Copy
[src]

Loading content...