2015-09-09 19 views
5

Rust'taki kitaplık bağlamaları ile uğraştım ve zor olmadı. Şimdi, ancak takılıyorum: librsync için bir bağ yazmaya çalışıyorum ve bazı işlevleri açık bir dosya tanıtıcısını (C içinde FILE*) geçirmenizi bekliyor. İlkel tipleri içinRust'ta açık dosya tanıtıcısı bekleyen bir C işlevine nasıl ciltleme yazabilirim?

, C içine geçmesi için basit bir yolu, (ilkel türde işaretçiler için aynı) vardır. Ve açık olmak gerekirse, libc sandığın fopen'u uyguladığının farkındayım, bu da bana mut FILE* (sonunda işi yapacak) veriyor. Ancak, 0121 bana - std::ffi::CString analog bir şey iletmek için bana verir standart standart kütüphane içinde bir şey olup olmadığını merak ediyordum.

+2

Zaten bildiğiniz caddeyi kullanmak istememenizin sebebi nedir? Bize, herhangi bir cevabın aynı sebepten dolayı otomatik olarak başarısız olmaması için bize söylemelisiniz. – Shepmaster

+1

Rust, Shepmaster ile çoğunlukla yeterlilik eksikliği. Varsa, alternatiflerden habersiz bir çözüm için acele etmek istemiyorum. – dodecaphonic

+0

Burada ne için soruyorsun, bu soruyu çok geniş kılan korkarım ki ben korkuyorum: doğrudan * yanlış FILE 'manipüle etmekten kaçınmak ister misin? ya da ne? –

cevap

1

Sen elbette transmute, bir RawFd kullanmak ve onunla libc::funcs::posix88::stdio::fdopen(_, mode) diyebiliriz. Gerçi bu oldukça kolay olurdu.