如何编写绑定到需要在Rust中打开文件句柄的C函数?

dod*_*nic 5 ffi rust

我曾经玩过在Rust中编写库绑定,并不困难.然而,现在,我被困住了:我正在尝试为librsync编写绑定,并且它的一些函数希望您传递一个打开的文件句柄(FILE*在C中).

对于原始类型,有一种直接的方法将它们传递给C,(对于指向原始类型的指针也是如此).并且,要清楚,我知道libc箱子实施fopen,这反过来给了我mut FILE*(最终将完成这项工作).但是,我想知道Rust标准库中是否有一些东西FILE*可以传递给我librsync- 也许是类似的东西std::ffi::CString.

llo*_*giq 2

您当然可以使用 a RawFd、 transmute 并libc::funcs::posix88::stdio::fdopen(_, mode)用它来调用。但这是非常不可移植的。