Attribute Macro pinned_drop

Source
#[pinned_drop]
Expand description

Used to implement PinnedDrop safely.

Only works on structs that are annotated via #[pin_data].

ยงExamples

use core::pin::Pin;
use pin_init::{pin_data, pinned_drop, PinnedDrop};

enum Command {
    /* ... */
}

#[pin_data(PinnedDrop)]
struct DriverData {
    #[pin]
    queue: CMutex<Vec<Command>>,
    buf: Box<[u8; 1024 * 1024]>,
    raw_info: *mut bindings::info,
}

#[pinned_drop]
impl PinnedDrop for DriverData {
    fn drop(self: Pin<&mut Self>) {
        unsafe { bindings::destroy_info(self.raw_info) };
    }
}