#[macro_use] extern crate core_foundation; use core_foundation::base::{CFComparisonResult, TCFType}; use std::os::raw::c_void; // sys equivalent stuff that must be declared #[repr(C)] pub struct __CFFooBar(c_void); pub type CFFooBarRef = *const __CFFooBar; extern "C" { pub fn CFFooBarGetTypeID() -> core_foundation::base::CFTypeID; pub fn fake_compare( this: CFFooBarRef, other: CFFooBarRef, context: *mut c_void, ) -> CFComparisonResult; } // Try to use the macros outside of the crate declare_TCFType!(CFFooBar, CFFooBarRef); impl_TCFType!(CFFooBar, CFFooBarRef, CFFooBarGetTypeID); impl_CFTypeDescription!(CFFooBar); impl_CFComparison!(CFFooBar, fake_compare);