pub trait Finalize {
// Provided method
fn finalize(&self) { ... }
}
Expand description
Trait to finalize objects before freeing them.
Must be always implemented for every cycle-collectable object, even when finalization
is disabled, to avoid cross-crate incompatibilities.
When finalization
is disabled, the finalize
method will never be called.
§Derive macro
The Finalize
derive macro can be used to implement an empty finalizer:
#[derive(Finalize)]
struct Foo {
// ...
}
Provided Methods§
sourcefn finalize(&self)
fn finalize(&self)
The finalizer, which is called after an object becomes garbage and before drop
ing it.
By default, objects are finalized only once. Use the method Cc::finalize_again
to make finalization happen again for a certain object.
Also, objects created during the execution of a finalizer are not automatically finalized.
§Default implementation
The default implementation is empty.
Implementations on Foreign Types§
impl Finalize for bool
impl Finalize for char
impl Finalize for f32
impl Finalize for f64
impl Finalize for i8
impl Finalize for i16
impl Finalize for i32
impl Finalize for i64
impl Finalize for i128
impl Finalize for isize
impl Finalize for str
impl Finalize for u8
impl Finalize for u16
impl Finalize for u32
impl Finalize for u64
impl Finalize for u128
impl Finalize for ()
impl Finalize for usize
impl Finalize for CString
impl Finalize for String
impl Finalize for CStr
impl Finalize for AtomicBool
impl Finalize for AtomicI8
impl Finalize for AtomicI16
impl Finalize for AtomicI32
impl Finalize for AtomicI64
impl Finalize for AtomicIsize
impl Finalize for AtomicU8
impl Finalize for AtomicU16
impl Finalize for AtomicU32
impl Finalize for AtomicU64
impl Finalize for AtomicUsize
impl Finalize for OsStr
impl Finalize for OsString
impl Finalize for Path
impl Finalize for PathBuf
impl Finalize for NonZeroI8
impl Finalize for NonZeroI16
impl Finalize for NonZeroI32
impl Finalize for NonZeroI64
impl Finalize for NonZeroI128
impl Finalize for NonZeroIsize
impl Finalize for NonZeroU8
impl Finalize for NonZeroU16
impl Finalize for NonZeroU32
impl Finalize for NonZeroU64
impl Finalize for NonZeroU128
impl Finalize for NonZeroUsize
source§impl<A, B, C, D> Finalize for (A, B, C, D)
impl<A, B, C, D> Finalize for (A, B, C, D)
source§impl<A, B, C, D, E> Finalize for (A, B, C, D, E)
impl<A, B, C, D, E> Finalize for (A, B, C, D, E)
source§impl<A, B, C, D, E, F> Finalize for (A, B, C, D, E, F)
impl<A, B, C, D, E, F> Finalize for (A, B, C, D, E, F)
source§impl<A, B, C, D, E, F, G> Finalize for (A, B, C, D, E, F, G)
impl<A, B, C, D, E, F, G> Finalize for (A, B, C, D, E, F, G)
source§impl<A, B, C, D, E, F, G, H> Finalize for (A, B, C, D, E, F, G, H)
impl<A, B, C, D, E, F, G, H> Finalize for (A, B, C, D, E, F, G, H)
source§impl<A, B, C, D, E, F, G, H, I> Finalize for (A, B, C, D, E, F, G, H, I)
impl<A, B, C, D, E, F, G, H, I> Finalize for (A, B, C, D, E, F, G, H, I)
source§impl<A, B, C, D, E, F, G, H, I, J> Finalize for (A, B, C, D, E, F, G, H, I, J)
impl<A, B, C, D, E, F, G, H, I, J> Finalize for (A, B, C, D, E, F, G, H, I, J)
source§impl<A, B, C, D, E, F, G, H, I, J, K> Finalize for (A, B, C, D, E, F, G, H, I, J, K)
impl<A, B, C, D, E, F, G, H, I, J, K> Finalize for (A, B, C, D, E, F, G, H, I, J, K)
source§impl<A, B, C, D, E, F, G, H, I, J, K, L> Finalize for (A, B, C, D, E, F, G, H, I, J, K, L)
impl<A, B, C, D, E, F, G, H, I, J, K, L> Finalize for (A, B, C, D, E, F, G, H, I, J, K, L)
impl<T> Finalize for PhantomData<T>
Implementors§
impl Finalize for Cleanable
Available on crate feature
cleaners
only.impl Finalize for Cleaner
Available on crate feature
cleaners
only.impl<T: ?Sized + Trace + 'static> Finalize for Cc<T>
impl<T: ?Sized + Trace + 'static> Finalize for Weak<T>
Available on crate feature
weak-ptr
only.impl<T: ?Sized + Trace + 'static> Finalize for Weakable<T>
Available on crate feature
weak-ptr
only.