Preventing the Derivation of Default - The bindgen User Guide
Description: `bindgen` automatically generates Rust FFI bindings to C and C++ libraries.

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Preventing the Derivation of `Default`

`bindgen` will attempt to derive/impl the `Default` traits on a best-effort basis. Sometimes, we need customize the implement of `Default` for certain types, In these cases, the `nodefault` annotation can be used to prevent bindgen to autoderive the `Default` traits for a type.

### Library

- `bindgen::Builder::no_default`

### Command Line

- `--no-default <regex>`

### Annotations

    /**
     * We need to specify some preset values as the Default of Header.
     *
     * for example:
     *
     * <div rustbindgen nodefault></div>
     */
    struct Header {
        unsigned int magic;
        unsigned char data[252];
    };

    ...

### Customize Implements

    // Include the generated bindings.
    include!(concat!(env!("OUT_DIR"), "/bindings.rs"));

    impl Default for Header {
        fn default() -> Self {
            Self {
                magic: 0x10203040u32,
                data: [0; 252usize],
            }
        }
    }