nnapi 0.2.0

Provides a safe abstraction of the Android NNAPI FFI bindings.
Documentation
use std::{
    ops::{Deref, DerefMut},
    ptr::NonNull,
};

use nnapi_sys::{ANeuralNetworksEvent, ANeuralNetworksEvent_free, ANeuralNetworksEvent_wait};

use crate::IntoResult;

pub struct Event {
    pub(crate) inner: NonNull<ANeuralNetworksEvent>,
}

impl Event {
    pub fn wait(&mut self) -> crate::Result<()> {
        unsafe { ANeuralNetworksEvent_wait(&mut **self) }.into_result()
    }
}

impl Deref for Event {
    type Target = ANeuralNetworksEvent;

    #[inline]
    fn deref(&self) -> &Self::Target {
        unsafe { self.inner.as_ref() }
    }
}

impl DerefMut for Event {
    #[inline]
    fn deref_mut(&mut self) -> &mut Self::Target {
        unsafe { self.inner.as_mut() }
    }
}

impl Drop for Event {
    fn drop(&mut self) {
        unsafe { ANeuralNetworksEvent_free(self.inner.as_mut()) };
    }
}