| # C++ bindings for Rust function pointer types |
| |
| When used as function parameter types or function return types, Rust function |
| pointer types map into the corresponding C++ types as follows: |
| |
| Rust | C++ |
| ---------------------------- | -------------------------------------- |
| `extern "C" fn(i32)` | `std::type_identity_t<void(int32_t)>&` |
| `Option<extern "C" fn(i32)>` | Not supported |
| |
| In other scenarios Rust function pointer types map into the corresponding C++ |
| types as follows: |
| |
| Rust | C++ |
| ---------------------------- | -------------------------------------- |
| `extern "C" fn(i32)` | `std::type_identity_t<void(int32_t)>*` |
| `Option<extern "C" fn(i32)>` | Not supported |
| |
| TODO: Link to the not-yet-written `references.md` with a longer explanation why |
| Rust references are sometimes bound to C++ references and sometimes to C++ |
| pointers (C++ references can only be bound once; C++ temporaries). |