1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#[macro_export]
macro_rules! symbol {
   ($handle: expr, $symbol: expr) => ({
       let sym: *mut libc::c_void = libc::dlsym($handle, $symbol);

       if sym.ne(&ptr::null_mut()) {
           Some(mem::transmute::<*mut libc::c_void, _>(sym))
       } else {
           None
       }
   });
}