google/crubit
A bidirectional bindings generator for C++ and Rust.
https://skillcdn.ai/gh/google/crubitConnect this address to your AI to use these skills. How to connect
- Unverified
- Default branch
main - Commit
a9601ab - License
Apache-2.0
Explore this repository
Searches the original text of skills and documents; display translations are not searched.
Documents
- High-level design of C++/Rust interopThis document describes the high-level design choices of Crubit, a C++/Rust Bidirectional Interop Tool.docs/design/design.md
- Problem Description: forward-declared typesC++ allows for the same type to be defined in multiple places, where each of these declarations refers to the same type. Types in C++ are not "owned" by any particular target, and anyone can redefine…docs/design/forward_declarations.md
- Lifetime Annotations for C++Summary: We propose a scheme for annotating lifetimes for references and pointers in C++.docs/design/lifetime_annotations_cpp.md
- Static Analysis for C++ LifetimesSummary: We describe a static analysis that infers lifetimes in C++ function signatures.docs/design/lifetimes_static_analysis.md
- [Pre-RFC] Allow stride != sizeRust should allow for values to be placed at the next aligned position after the previous value, ignoring the tail padding of that previous field. This requires changing the meaning of "size", so tha…docs/design/pre_rfc_separate_size_stride.md
- Struct LayoutC++ (in the Itanium ABI) extends the C layout rules, and so repr(C) isn't enough. This pages documents the tweaks to Rust structs to give them the same layout as C++ structs.docs/design/struct_layout.md
- Thunks for class template member functionsGiven the C++ header below...docs/design/thunks_for_class_template_member_functions.md
- `Unpin` for C++ TypesSUMMARY: A C++ type is Unpin if it is Rust-movable (e.g., a trivial type, or a nontrivial type which is [[clang::trivial_abi]]). Any such type can be used by value or plain reference/pointer in inter…docs/design/unpin.md