Skip to main content

CDrop

Trait CDrop 

Source
pub trait CDrop {
    // Required method
    fn do_drop(&mut self) -> Result<(), CDropError>;
}
Expand description

Releases heap memory referenced by a C-compatible value behind raw pointer fields (typically data that was moved into a Box and leaked via Box::into_raw).

By default, #[derive(CDrop)] emits both a CDrop impl and a matching Drop impl that calls do_drop, so dropping the value through Rust’s normal path releases its pointer fields. #[no_drop_impl] suppresses only the Drop impl; in that case a handwritten Drop must call do_drop itself, otherwise the pointer fields are leaked.

see Deriving the traits.

Required Methods§

Source

fn do_drop(&mut self) -> Result<(), CDropError>

Release any Rust-owned memory referenced by self. The derived Drop impl calls this and discards the result, so errors raised from a normal drop are not observed.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl CDrop for CString

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for bool

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for f32

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for f64

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for i8

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for i16

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for i32

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for i64

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for u8

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for u16

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for u32

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for u64

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl CDrop for usize

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Source§

impl<T: CDrop, const N: usize> CDrop for [T; N]

Source§

fn do_drop(&mut self) -> Result<(), CDropError>

Implementors§