# Customizing bindings using annotations

<internal link>/cpp/customizing

[TOC]

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/public:annotations`
*   **Include**: `#include <crubit/support/annotations.h>`
*   Full API documentation:
    support/annotations.h

## Example

Given the following C++ header:

```live-snippet
cs/file:examples/cpp/unsafe_attributes/example.h symbol:SafeSignatureButAnnotatedUnsafe
```

Crubit will generate the following bindings:

```live-snippet
cs/file:examples/cpp/unsafe_attributes/example_generated.rs symbol:SafeSignatureButAnnotatedUnsafe
```
