[][src]Trait structural::field::ownership::DropFields

pub unsafe trait DropFields {
    fn pre_move(&mut self);
unsafe fn drop_fields(&mut self, moved: MovedOutFields); }

Defines how the type is dropped, after some fields were moved out with the IntoField::move_out_field_ or IntoVariantField::move_out_vfield_ methods.

Safety

Implementors must drop the fields that were not moved out.

To check whether a field with an Into*Field implementation was moved out you must call moved.is_moved_out(), and pass the same FieldBit argument that was used to mark the fields as moved out in its Into*Field implementation. If is_moved_out returns false, then you must drop the field.

Before move method

You can define drop logic similar to Drop::drop with pre_move.

All fields that have accessor impls must still be usable after pre_move is called.

Example

For an example of implementing this trait you can look at:

Required methods

fn pre_move(&mut self)

What this type does right before any field is moved.

unsafe fn drop_fields(&mut self, moved: MovedOutFields)

Drops all the fields that were not moved out.

Safety

The passed in MovedOutFields must be the same one that was passed by mutable reference to the move_out_field and/or move_out_vfield methods on self, it must not have been mutated outside those method calls.

Loading content...

Implementations on Foreign Types

impl<T> DropFields for [T; 0][src]

impl<T> DropFields for [T; 1][src]

impl<T> DropFields for [T; 2][src]

impl<T> DropFields for [T; 3][src]

impl<T> DropFields for [T; 4][src]

impl<T> DropFields for [T; 5][src]

impl<T> DropFields for [T; 6][src]

impl<T> DropFields for [T; 7][src]

impl<T> DropFields for [T; 8][src]

impl<T> DropFields for [T; 9][src]

impl<T> DropFields for [T; 10][src]

impl<T> DropFields for [T; 11][src]

impl<T> DropFields for [T; 12][src]

impl<T> DropFields for [T; 13][src]

impl<T> DropFields for [T; 14][src]

impl<T> DropFields for [T; 15][src]

impl<T> DropFields for [T; 16][src]

impl<T> DropFields for [T; 17][src]

impl<T> DropFields for [T; 18][src]

impl<T> DropFields for [T; 19][src]

impl<T> DropFields for [T; 20][src]

impl<T> DropFields for [T; 21][src]

impl<T> DropFields for [T; 22][src]

impl<T> DropFields for [T; 23][src]

impl<T> DropFields for [T; 24][src]

impl<T> DropFields for [T; 25][src]

impl<T> DropFields for [T; 26][src]

impl<T> DropFields for [T; 27][src]

impl<T> DropFields for [T; 28][src]

impl<T> DropFields for [T; 29][src]

impl<T> DropFields for [T; 30][src]

impl<T> DropFields for [T; 31][src]

impl<T> DropFields for [T; 32][src]

impl<T> DropFields for Option<T> where
    Self: PrePostDropFields
[src]

impl<T, E> DropFields for Result<T, E> where
    Self: PrePostDropFields
[src]

impl<T> DropFields for Range<T> where
    Self: PrePostDropFields
[src]

impl<T> DropFields for RangeFrom<T> where
    Self: PrePostDropFields
[src]

impl<T> DropFields for RangeTo<T> where
    Self: PrePostDropFields
[src]

impl<T> DropFields for RangeToInclusive<T> where
    Self: PrePostDropFields
[src]

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

impl<C0> DropFields for (C0,)[src]

impl<C0, C1> DropFields for (C0, C1)[src]

impl<C0, C1, C2> DropFields for (C0, C1, C2)[src]

impl<C0, C1, C2, C3> DropFields for (C0, C1, C2, C3)[src]

impl<C0, C1, C2, C3, C4> DropFields for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4, C5> DropFields for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5, C6> DropFields for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> DropFields for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> DropFields for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> DropFields for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> DropFields for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> DropFields for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

Loading content...

Implementors

impl<T> DropFields for FieldCloner<T>[src]

impl<T> DropFields for StrucWrapper<T> where
    T: DropFields
[src]

impl<T, V> DropFields for VariantProxy<T, V> where
    T: IsVariant<V> + DropFields,
    V: IsTStr
[src]

Loading content...