22 lines
891 B
Markdown
22 lines
891 B
Markdown
# C-friendly FFI Design
|
|
|
|
This document is a guide for authoring Rust libraries that expose a C-friendly FFI
|
|
and distributing them as ordinary CMake/pkg-config packages. It covers how to design
|
|
C-friendly FFI signatures, how to pass primitive types, enums, strings and
|
|
Rust-specific constructs such as `Option` and `Result` across the boundary, and how
|
|
to write the accompanying C/C++ header files.
|
|
|
|
## Contents
|
|
|
|
* [Rust Side](rust-side.md)
|
|
- [FFI Function Signature](rust-side/func-signature.md)
|
|
- [Allowed Data Types](rust-side/data-types.md)
|
|
- [FFI Example](rust-side/example.md)
|
|
- [Miscellaneous Stuff](rust-side/misc.md)
|
|
* [C/C++ Side](c-cpp-side.md)
|
|
- [C Header](c-cpp-side/c-header.md)
|
|
- [C++ Header](c-cpp-side/cpp-header.md)
|
|
- [C/C++ Headers Example](c-cpp-side/example.md)
|
|
- [Miscellaneous Stuff](c-cpp-side/misc.md)
|
|
* [Pack Distribution](packer.md)
|