Rust bindings for lifetime-annotated C++ pointers look as follows:
Rust API | C++ bindings |
---|---|
*const T | const T* |
*mut T | T* |
When used as function parameter types or function return types, Rust references map into the corresponding C++ types as follows:
Rust API | C++ bindings |
---|---|
&'a T | const std::int32_t & [[clang::annotate_type("lifetime", "a")]] |
&'a mut T | std::int32_t & [[clang::annotate_type("lifetime", "a")]] |
&str | TODO(b/262580415): Not supported yet. |
&mut str | TODO(b/262580415): Not supported yet. |
&[T] | TODO(b/271016831): Not supported yet. |
&mut[T] | TODO(b/271016831): Not supported yet. |
TODO(b/286299326): Use shorter $a
syntax in the generated C++.
TODO(b/279913786): Generate ABSL_ATTRIBUTE_LIFETIME_BOUND
when appropriate.
TODO(b/286256327): Support Rust references in fields and nested types.