2015-09-09 28 views
5

我以前玩過在Rust中編寫庫綁定,並不難。然而,現在我被卡住了:我試圖爲librsync寫一個綁定,並且它的某些函數希望你傳遞一個打開的文件句柄(C中的FILE*)。如何寫一個需要在Rust中打開文件句柄的C函數的綁定?

對於原始類型,有一種直接的方法可以將它們傳遞到C中(指向原始類型的指針也是一樣)。而且,爲了清楚起見,我知道libc箱子實現了fopen,這反過來又給了我一個mut FILE*(它最終會完成這項工作)。然而,我想知道Rust標準庫中是否有某些東西可以讓FILE*傳遞給--也許類似於std::ffi::CString

+2

你不想使用你已經知道的道路的原因是什麼?你必須告訴我們,以便任何答案不會由於同樣的原因而自動失敗。 – Shepmaster

+1

對Rust,Shepmaster大多缺乏熟練度。如果有的話,我不想急於找到一種解決方案,不知道替代方案。 – dodecaphonic

+0

目前還不清楚你在這裏要求什麼,這反過來又使問題過於寬泛:我想避免直接操縱'* mut FILE'嗎?或者是什麼? –

回答

1

您當然可以使用RawFd,轉換並調用libc::funcs::posix88::stdio::fdopen(_, mode)。這將是非常不可移植的。

相關問題