# Crubit runtime support library

Disclaimer: This project is experimental, under heavy development, and should
not be used yet.

This directory contains C++ and Rust libraries needed to support the C++ and
Rust FFI bindings that Crubit's tools generate:

* The C++ and Rust code generated by Crubit's `rs_bindings_from_cc` and
  `cc_bindings_from_rs` tools may depend on these libraries.  For example,
  compile-time assertions related to struct layout in the generated
  `..._rs_api.h` depend on `crubit/support/offset_of.h`.

* The C++ and Rust code that uses Crubit-generated bindings may need
  to depend on these libraries.  For example, Rust code that uses
  Crubit-generated bindings for C++ may need to use the `forward_declare` crate
  to perform safe casting between forward-declared and fully-defined types.
