Cleanup: Return `IR`, not `Rc<IR>`, from testing functions.

This makes it more obvious that you can mutate the IR for testing purposes. You could before, as well, using e.g. `Rc::make_mut(&mut ir)`, but it was clunky. And because the IR was behind an `Rc`, it wasn't obvious that it wasn't also stored somewhere else -- it could have been that you could mutate your copy, but there was some copy somewhere else that couldn't be mutated. That's what the API made it look like. By using `IR` by value, it's obvious that there's no shared state you'd be decoupling yourself from, and it's always OK to mutate the IR for testing purposes.

I think it was an `Rc<IR>` originally so that it could be passed in where an `Rc<IR>` is expected, but as this CL shows, it isn't hard to uncouple that.

PiperOrigin-RevId: 515266544
2 files changed
tree: d4624d7cb6300ba9ec10a44bd9f09673f37aa0f9
  1. .bazelci/
  2. bazel/
  3. cc_bindings_from_rs/
  4. common/
  5. docs/
  6. lifetime_analysis/
  7. lifetime_annotations/
  8. migrator/
  9. nullability_verification/
  10. rs_bindings_from_cc/
  11. support/
  12. .bazelrc
  13. .gitignore
  14. BUILD
  15. Cargo.Bazel.lock
  16. CODE_OF_CONDUCT
  17. CONTRIBUTING
  18. LICENSE
  19. README.md
  20. 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