Convert `RsTypeKind` creation into a Salsa query.

This is one of the more important things I wanted to do with this rewrite -- after this CL, we will no longer recompute the RsTypeKind all over the place, but just look it up or create on first use. (It's possible/probable(?) that there's no particular performance benefit unless/until we change `RsType` to be interned/hashconsed, though -- the point is that this is at least possible to optimize from here, I guess.)

Here I opted for a small/fast way to make `RsType` suitable as a cheaply-copyable query key: rather than holding `RsType` in an `Rc`, I made it relatively cheap to clone. (It is now five words -- we can cut it down to 4 words if `ItemId` were converted to be a nonzero number.) Slightly marginal, but since it's the only parameter to the query it should be fine really.

In the future, we may want to instead use something like `ArcIntern<RsType>` to make it very efficient to use in Salsa.

PiperOrigin-RevId: 459456664
3 files changed
tree: ca3589f545bbb940e329b4bbd3a81b9bd4681fc8
  1. .bazelci/
  2. bazel/
  3. cc_template/
  4. common/
  5. docs/
  6. lifetime_analysis/
  7. lifetime_annotations/
  8. migrator/
  9. nullability_verification/
  10. rs_bindings_from_cc/
  11. .bazelrc
  12. .gitignore
  13. BUILD
  14. Cargo.Bazel.lock
  15. CODE_OF_CONDUCT
  16. CONTRIBUTING
  17. LICENSE
  18. README.md
  19. WORKSPACE
README.md

Crubit: C++/Rust Bidirectional Interop Tool

Build status

Extremely experimental interop tooling for C++ and Rust.

Please don‘t use, this is an experiment and we don’t yet know where will it take us. There will be breaking changes without warning. Unfortunately, we can't take contributions at this point.

Building Crubit

$ apt install clang lld bazel
$ git clone git@github.com:google/crubit.git
$ cd crubit
$ bazel build --linkopt=-fuse-ld=/usr/bin/ld.lld //rs_bindings_from_cc:rs_bindings_from_cc_impl

Using a prebuilt LLVM tree

$ git clone https://github.com/llvm/llvm-project
$ cd llvm-project
$ CC=clang CXX=clang++ cmake -S llvm -B build -DLLVM_ENABLE_PROJECTS='clang' -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install
$ cmake --build build -j
$ # wait...
$ cmake --install build
$ cd ../crubit
$ LLVM_INSTALL_PATH=../llvm-project/install bazel build //rs_bindings_from_cc:rs_bindings_from_cc_impl