[−][src]Trait structural::field::ownership::DropFields
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:
-
for structs: The manual implementation example for
IntoField
. -
for enums: The manual implementation example for
IntoVariantField
.
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.
Implementations on Foreign Types
impl<T> DropFields for [T; 0]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 1]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 2]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 3]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 4]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 5]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 6]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 7]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 8]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 9]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 10]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 11]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 12]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 13]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 14]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 15]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 16]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 17]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 18]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 19]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 20]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 21]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 22]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 23]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 24]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 25]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 26]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 27]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 28]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 29]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 30]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 31]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for [T; 32]
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for Option<T> where
Self: PrePostDropFields,
[src]
Self: PrePostDropFields,
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved_fields: MovedOutFields)
[src]
impl<T, E> DropFields for Result<T, E> where
Self: PrePostDropFields,
[src]
Self: PrePostDropFields,
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved_fields: MovedOutFields)
[src]
impl<T> DropFields for Range<T> where
Self: PrePostDropFields,
[src]
Self: PrePostDropFields,
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for RangeFrom<T> where
Self: PrePostDropFields,
[src]
Self: PrePostDropFields,
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for RangeTo<T> where
Self: PrePostDropFields,
[src]
Self: PrePostDropFields,
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T> DropFields for RangeToInclusive<T> where
Self: PrePostDropFields,
[src]
Self: PrePostDropFields,
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T: ?Sized> DropFields for Box<T> where
T: DropFields,
[src]
T: DropFields,
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<C0> DropFields for (C0,)
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<C0, C1> DropFields for (C0, C1)
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<C0, C1, C2> DropFields for (C0, C1, C2)
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<C0, C1, C2, C3> DropFields for (C0, C1, C2, C3)
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<C0, C1, C2, C3, C4> DropFields for (C0, C1, C2, C3, C4)
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<C0, C1, C2, C3, C4, C5> DropFields for (C0, C1, C2, C3, C4, C5)
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<C0, C1, C2, C3, C4, C5, C6> DropFields for (C0, C1, C2, C3, C4, C5, C6)
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7> DropFields for (C0, C1, C2, C3, C4, C5, C6, C7)
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> DropFields for (C0, C1, C2, C3, C4, C5, C6, C7, C8)
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[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]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[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]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[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]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
Implementors
impl<T> DropFields for FieldCloner<T>
[src]
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, _: MovedOutFields)
[src]
impl<T> DropFields for StrucWrapper<T> where
T: DropFields,
[src]
T: DropFields,
fn pre_move(&mut self)
[src]
unsafe fn drop_fields(&mut self, moved: MovedOutFields)
[src]
impl<T, V> DropFields for VariantProxy<T, V> where
T: IsVariant<V> + DropFields,
V: IsTStr,
[src]
T: IsVariant<V> + DropFields,
V: IsTStr,