Trait cpp_utils::StaticCast
[−]
[src]
pub trait StaticCast<T> { fn static_cast(&self) -> &T; fn static_cast_mut(&mut self) -> &mut T; }
Provides access to C++ static_cast
conversion from derived class to base class.
This trait is automatically implemented by cpp_to_rust
.
If T1
class is derived (in C++) from T2
class,
StaticCast<T2>
is implemented for T1
.
StaticCast
allows to convert a reference to a class into
a reference to a base class.
static_cast
and static_cast_mut
free functions can be used
to convert pointer types.
Note that Rust functions associated with this trait have runtime overhead.
In C++, static_cast
is usually a no-op if there is no multiple inheritance,
and multiple inheritance requires pointer adjustment. However, Rust compiler
and cpp_to_rust
do not have any information about these implementation details,
so all calls of static_cast
are wrapper in FFI functions.
Still, static_cast
is faster than casts with runtime checks on C++ side
because runtime overhead of Rust wrapper functions is the same for all cast types.
Required Methods
fn static_cast(&self) -> &T
Convert type of a const reference.
fn static_cast_mut(&mut self) -> &mut T
Convert type of a mutable reference.