C++ bindings for Rust type aliases.
A rust Rust type aliases, such as pub type X = ...;, is mapped to the equivalent
C++ type alias, such as using X = ...;.
Limitations:
- The type must be a supported type.
- The alias must not be generic: aliases with generic parameters, such as
pub type X<T> = ..., are not supported.
Example
Given the following Rust crate:
// Part of the Crubit project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
pub type TypeAlias = i32;
Crubit will generate the following bindings:
// Part of the Crubit project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// Automatically @generated C++ bindings for the following Rust crate:
// example_crate_golden
// Features: custom_ffi_types, non_unpin_ctor, std_unique_ptr, std_vector,
// supported
// clang-format off
#ifndef THIRD_PARTY_CRUBIT_EXAMPLES_RUST_TYPE_ALIAS_EXAMPLE_CRATE_GOLDEN
#define THIRD_PARTY_CRUBIT_EXAMPLES_RUST_TYPE_ALIAS_EXAMPLE_CRATE_GOLDEN
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreturn-type-c-linkage"
#include "support/annotations_internal.h"
#include <cstdint>
namespace example_crate {
using TypeAlias CRUBIT_INTERNAL_RUST_TYPE(
":: example_crate_golden :: TypeAlias") = std::int32_t;
}
#pragma clang diagnostic pop
#endif // THIRD_PARTY_CRUBIT_EXAMPLES_RUST_TYPE_ALIAS_EXAMPLE_CRATE_GOLDEN