#[[ ## Overview These rules are for using [Bindgen][bindgen] to generate [Rust][rust] bindings to C (and some C++) libraries. [rust]: http://www.rust-lang.org/ [bindgen]: https://github.com/rust-lang/rust-bindgen See the [bindgen example](https://github.com/bazelbuild/rules_rust/tree/main/examples/bindgen/BUILD.bazel) for a more complete example of use. ### Setup To use the Rust bindgen rules, add the following to your `WORKSPACE` file to add the external repositories for the Rust bindgen toolchain (in addition to the [rust rules setup](https://bazelbuild.github.io/rules_rust/#setup)): ```python load("@rules_rust//bindgen:repositories.bzl", "rust_bindgen_dependencies", "rust_bindgen_register_toolchains") rust_bindgen_dependencies() rust_bindgen_register_toolchains() load("@rules_rust//bindgen:transitive_repositories.bzl", "rust_bindgen_transitive_dependencies") rust_bindgen_transitive_dependencies() ``` Bindgen aims to be as hermetic as possible so will end up building `libclang` from [llvm-project][llvm_proj] from source. If this is found to be undesirable then no Bindgen related calls should be added to your WORKSPACE and instead users should define their own repositories using something akin to [crate_universe][cra_uni] and define their own toolchains following the instructions for [rust_bindgen_toolchain](#rust_bindgen_toolchain). [llvm_proj]: https://github.com/llvm/llvm-project [cra_uni]: https://bazelbuild.github.io/rules_rust/crate_universe.html --- --- ]]#