本篇是《手动绑定 C 库入门》的第二篇。了解第一篇后,我们知道在调用 C 库时,需要重新在 Rust 中对该 C 库中的数据类型和函数签名进行封装。这篇我们将实践涉及到诸如数组,结构体等类型时,如何进行手动绑定。

1. 数组示例









  








  








  

2. 结构体

2.1 repr属性









  

2.2 结构体




  

该函数根据 format 中定义的格式化规则,格式化结构体 timeptr 表示的时间,并把它存储在 str 中。这个函数使用了指向 C 结构体 tm 的指针,该结构体也必须在 Rust 中重新声明,通过类型布局小节,我们知道可以使用repr属性#[repr(C)]来确保在 Rust 中,该结构体的内存布局与在 C 中相同。









  








  

2.3 Opaque 结构体









  








  








  








  








  

总结

本文分享自微信公众号 - Rust语言中文社区(rust-china)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

03-09 13:01