>>734の方法だとこんな感じなのかな
enum ABC {}
#[link(name = "・・・")]
extern {
 fn func1(x: *const u8) -> *mut ABC
 fn func2(y: *mut ABC);
 fn func3(z: &*mut ABC);
}
fn main() {
 unsafe {
  let a = func1("foo.dat".as_ptr()); //C側でメモリが確保されアドレスが帰ってくる
  func2(a); //アドレスを使って処理
  func3(&a); //確保したメモリを解放(以降aを触ってはいけない)
 }
}
中身にアクセスしたいならenumを#[repr(C)]付きのstructにして構造を定義すればいいのかな
読み書きするRustのコード全てをunsafeにする必要がありそうだけど