macro_rules! impl_raw_accessors(
    ($(($t:ty, $raw:ty)),+) => (
        $(
        impl $t {
            #[inline]
            pub unsafe fn raw(&self) -> $raw { self.raw }
        }
        )+
    )
);

macro_rules! impl_owned_accessors(
    ($(($t:ty, $owned:ident)),+) => (
        $(
        impl $t {
            #[inline]
            pub unsafe fn $owned(&self) -> bool { self.$owned }
        }
        )+
    )
);

macro_rules! impl_raw_constructor(
    ($(($t:ty, $te:ident ($($r:ident:$rt:ty),+))),+) => (
        $(
        impl $t {
            #[inline]
            pub unsafe fn from_ll($($r:$rt),+) -> $t {
                $te { $($r: $r),+ }
            }
        }
        )+
    )
);

macro_rules! impl_raw_accessors(
    ($(($t:ty, $raw:ty)),+) => (
        $(
        impl $t {
            #[inline]
            pub fn raw(&self) -> $raw { self.raw }
        }
        )+
    )
);

macro_rules! impl_owned_accessors(
    ($(($t:ty, $owned:ident)),+) => (
        $(
        impl $t {
            #[inline]
            pub fn $owned(&self) -> bool { self.$owned }
        }
        )+
    )
);

macro_rules! impl_raw_constructor(
    ($(($t:ty, $te:ident ($($r:ident:$rt:ty),+))),+) => (
        $(
        impl $t {
            #[inline]
            pub unsafe fn from_ll($($r:$rt),+) -> $t {
                $te { $($r: $r),+ }
            }
        }
        )+
    )
);

--- 
+++ 
@@ -3,7 +3,7 @@
         $(
         impl $t {
             #[inline]
-            pub fn raw(&self) -> $raw { self.raw }
+            pub unsafe fn raw(&self) -> $raw { self.raw }
         }
         )+
     )
@@ -14,7 +14,7 @@
         $(
         impl $t {
             #[inline]
-            pub fn $owned(&self) -> bool { self.$owned }
+            pub unsafe fn $owned(&self) -> bool { self.$owned }
         }
         )+
     )
Mark raw() and owned() accessors as unsafe.

We don't want to encourage casual use of these functions from user
code; raw pointers and ffi interop are inherently unsafe.
