spice-client-glib 0.1.0

Rust bindings for the Spice client library
use glib::translate::*;

use crate::UsbDevice;

#[derive(Clone, Debug)]
pub struct FakeUsbContext;

impl rusb::UsbContext for FakeUsbContext {
    fn as_raw(&self) -> *mut rusb::ffi::libusb_context {
        unimplemented!()
    }
}

impl UsbDevice {
    #[doc(alias = "spice_usb_device_get_libusb_device")]
    #[doc(alias = "get_libusb_device")]
    pub fn libusb_device(&self) -> Option<rusb::Device<FakeUsbContext>> {
        let ptr = unsafe { ffi::spice_usb_device_get_libusb_device(self.to_glib_none().0) };
        std::ptr::NonNull::new(ptr as *mut _)
            .map(|ptr| unsafe { rusb::Device::from_libusb(FakeUsbContext {}, ptr) })
    }
}