//! | name in Rust | name in C++ | restrictions |
//! | String | rust::String | |
//! | &str | rust::Str | |
//! | &[T] | rust::Slice<const T> | cannot hold opaque C++ type |
//! | &mut [T] | rust::Slice<T> | cannot hold opaque C++ type |
//! | CxxString | std::string | cannot be passed by value |
//! | Box<T> | rust::Box<T> | cannot hold opaque C++ type |
//! | UniquePtr<T> | std::unique_ptr<T> | cannot hold opaque Rust type |
//! | SharedPtr<T> | std::shared_ptr<T> | cannot hold opaque Rust type |
//! | [T; N] | std::array<T, N> | cannot hold opaque C++ type |
//! | Vec<T> | rust::Vec<T> | cannot hold opaque C++ type |
//! | CxxVector<T> | std::vector<T> | cannot be passed by value, cannot hold opaque Rust type |
//! | *mut T, *const T | T*, const T* | fn with a raw pointer argument must be declared unsafe to call |
//! | fn(T, U) -> V | rust::Fn<V(T, U)> | only passing from Rust to C++ is implemented so far |
//! | Result<T> | throw/catch | allowed as return type only |
//!
//!
//! The C++ API of the `rust` namespace is defined by the *include/cxx.h* file
//! in