Attributes
Most items in the bridge support the #[namespace]
, #[cxx_name=...]
and #[rust_name=...]
attributes.
namespace
The C++ namespace
which to emit extern "RustQt"
items and the namespace to find extern "C++Qt"
items.
An item will inherit the namespace specified on it's surrounding extern
block if any,
otherwise the namespace specified with the top level cxx_qt::bridge
attribute, if any, will be used.
📝 Note: The
#[namespace = "..."]
attribute is not allowed on signals, methods or inherited methods
#[cxx_qt::bridge(namespace = "cxx_qt::website")]
pub mod qobject {
cxx_name
and rust_name
The #[cxx_name = "..."]
attribute replaces the name that C++ should use for this item.
The #[rust_name = "..."]
attribute replaces the name that Rust should use for this item.
For #[qproperty]
, a CXX or Rust name can be provided inside the attribute like so
#[qproperty(T, name, cxx_name = "MyName", rust_name = "my_name")]
📝 Note: If an item has different C++ and Rust identifiers, it is always referenced by its Rust identifier inside the bridge, not its C++ identifier. (e.g. when referring to a QObject inside a
#[qenum(...)]
attribute)
⚠️ Deprecation warning: CXX-Qt <0.7 did automatic case conversion if no
#[cxx_name = "..."]
or#[rust_name = "..."]
is specified. Starting with CXX-Qt 0.7, this is no longer the case! Automatic case conversion will be opt-in instead.
Automatic case conversion
The #[auto_cxx_name]
and #[auto_rust_name]
attributes can be used to automatically rename cxx and rust names.
These are placed at a block level on extern "RustQt"
or extern "C++Qt"
blocks, and will automatically case convert the items inside, unless they specify either a rust_name
or cxx_name
.
By default #[auto_cxx_name]
will generate a camelCase conversion forcxx_name
and #[auto_rust_name]
will generate a snake_case conversion for rust_name
.