blob: a3bdcc55e8e0d57d537d7d7794ea134b290c7be6 [file] [view] [edit]
<!-- <internal link> -->
# Customizing bindings using annotations
The Rust bindings for a C++ declaration can be customized using an attribute
macro from `<crubit/support/annotations.h>`.
For instance:
* A function can be marked `unsafe` in Rust, even if Crubit would otherwise
assume it was safe, using `CRUBIT_UNSAFE`.
* Missing bindings for an item can be treated as an error, instead of ignored,
using `CRUBIT_MUST_BIND`.
* An item can be given a different name in Rust using
`CRUBIT_RUST_NAME("rust_name_here")`.
<!-- TODO(jeanpierreda): should we fully enumerate everything, on this page? -->
More information:
* **Dependency**: `//support:annotations`
* **Include**: `#include <crubit/support/annotations.h>`
* Full API documentation: support/annotations.h
## Example
Given the following C++ header:
```
{{ #include ../../examples/cpp/unsafe_attributes/example.h }}
```
<!-- symbol:SafeSignatureButAnnotatedUnsafe -->
Crubit will generate the following bindings:
```
{{ #include ../../examples/cpp/unsafe_attributes/example_generated.rs }}
```
<!-- symbol:SafeSignatureButAnnotatedUnsafe -->