aboutsummaryrefslogtreecommitdiff
path: root/src/external.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/external.rs')
-rw-r--r--src/external.rs92
1 files changed, 43 insertions, 49 deletions
diff --git a/src/external.rs b/src/external.rs
index 103b5d1..716af83 100644
--- a/src/external.rs
+++ b/src/external.rs
@@ -14,15 +14,15 @@ Next, re-export the library from the `__private` module here.
Next, define a macro like so:
```rust
-#[macro_export(local_inner_macros)]
+#[macro_export]
#[doc(hidden)]
#[cfg(feature = "serde")]
macro_rules! __impl_external_bitflags_my_library {
(
$InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
$(
- $(#[$attr:ident $($args:tt)*])*
- $Flag:ident;
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:tt;
)*
}
) => {
@@ -30,15 +30,15 @@ macro_rules! __impl_external_bitflags_my_library {
};
}
-#[macro_export(local_inner_macros)]
+#[macro_export]
#[doc(hidden)]
#[cfg(not(feature = "my_library"))]
macro_rules! __impl_external_bitflags_my_library {
(
$InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
$(
- $(#[$attr:ident $($args:tt)*])*
- $Flag:ident;
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:tt;
)*
}
) => {};
@@ -57,8 +57,8 @@ Now, we add our macro call to the `__impl_external_bitflags` macro body:
__impl_external_bitflags_my_library! {
$InternalBitFlags: $T, $PublicBitFlags {
$(
- $(#[$attr $($args)*])*
- $Flag;
+ $(#[$inner $($args)*])*
+ const $Flag;
)*
}
}
@@ -77,14 +77,14 @@ pub(crate) mod __private {
}
/// Implements traits from external libraries for the internal bitflags type.
-#[macro_export(local_inner_macros)]
+#[macro_export]
#[doc(hidden)]
macro_rules! __impl_external_bitflags {
(
$InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
$(
- $(#[$attr:ident $($args:tt)*])*
- $Flag:ident;
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:tt;
)*
}
) => {
@@ -92,29 +92,29 @@ macro_rules! __impl_external_bitflags {
// Use `serde` as an example: generate code when the feature is available,
// and a no-op when it isn't
- __impl_external_bitflags_serde! {
+ $crate::__impl_external_bitflags_serde! {
$InternalBitFlags: $T, $PublicBitFlags {
$(
- $(#[$attr $($args)*])*
- $Flag;
+ $(#[$inner $($args)*])*
+ const $Flag;
)*
}
}
- __impl_external_bitflags_arbitrary! {
+ $crate::__impl_external_bitflags_arbitrary! {
$InternalBitFlags: $T, $PublicBitFlags {
$(
- $(#[$attr $($args)*])*
- $Flag;
+ $(#[$inner $($args)*])*
+ const $Flag;
)*
}
}
- __impl_external_bitflags_bytemuck! {
+ $crate::__impl_external_bitflags_bytemuck! {
$InternalBitFlags: $T, $PublicBitFlags {
$(
- $(#[$attr $($args)*])*
- $Flag;
+ $(#[$inner $($args)*])*
+ const $Flag;
)*
}
}
@@ -125,15 +125,15 @@ macro_rules! __impl_external_bitflags {
pub mod serde;
/// Implement `Serialize` and `Deserialize` for the internal bitflags type.
-#[macro_export(local_inner_macros)]
+#[macro_export]
#[doc(hidden)]
#[cfg(feature = "serde")]
macro_rules! __impl_external_bitflags_serde {
(
$InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
$(
- $(#[$attr:ident $($args:tt)*])*
- $Flag:ident;
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:tt;
)*
}
) => {
@@ -153,9 +153,7 @@ macro_rules! __impl_external_bitflags_serde {
fn deserialize<D: $crate::__private::serde::Deserializer<'de>>(
deserializer: D,
) -> $crate::__private::core::result::Result<Self, D::Error> {
- let flags: $PublicBitFlags = $crate::serde::deserialize(
- deserializer,
- )?;
+ let flags: $PublicBitFlags = $crate::serde::deserialize(deserializer)?;
Ok(flags.0)
}
@@ -163,15 +161,15 @@ macro_rules! __impl_external_bitflags_serde {
};
}
-#[macro_export(local_inner_macros)]
+#[macro_export]
#[doc(hidden)]
#[cfg(not(feature = "serde"))]
macro_rules! __impl_external_bitflags_serde {
(
$InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
$(
- $(#[$attr:ident $($args:tt)*])*
- $Flag:ident;
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:tt;
)*
}
) => {};
@@ -184,15 +182,15 @@ pub mod arbitrary;
mod bytemuck;
/// Implement `Arbitrary` for the internal bitflags type.
-#[macro_export(local_inner_macros)]
+#[macro_export]
#[doc(hidden)]
#[cfg(feature = "arbitrary")]
macro_rules! __impl_external_bitflags_arbitrary {
(
$InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
$(
- $(#[$attr:ident $($args:tt)*])*
- $Flag:ident;
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:tt;
)*
}
) => {
@@ -206,62 +204,58 @@ macro_rules! __impl_external_bitflags_arbitrary {
};
}
-#[macro_export(local_inner_macros)]
+#[macro_export]
#[doc(hidden)]
#[cfg(not(feature = "arbitrary"))]
macro_rules! __impl_external_bitflags_arbitrary {
(
$InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
$(
- $(#[$attr:ident $($args:tt)*])*
- $Flag:ident;
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:tt;
)*
}
) => {};
}
/// Implement `Pod` and `Zeroable` for the internal bitflags type.
-#[macro_export(local_inner_macros)]
+#[macro_export]
#[doc(hidden)]
#[cfg(feature = "bytemuck")]
macro_rules! __impl_external_bitflags_bytemuck {
(
$InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
$(
- $(#[$attr:ident $($args:tt)*])*
- $Flag:ident;
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:tt;
)*
}
) => {
// SAFETY: $InternalBitFlags is guaranteed to have the same ABI as $T,
// and $T implements Pod
- unsafe impl $crate::__private::bytemuck::Pod for $InternalBitFlags
- where
- $T: $crate::__private::bytemuck::Pod,
+ unsafe impl $crate::__private::bytemuck::Pod for $InternalBitFlags where
+ $T: $crate::__private::bytemuck::Pod
{
-
}
// SAFETY: $InternalBitFlags is guaranteed to have the same ABI as $T,
// and $T implements Zeroable
- unsafe impl $crate::__private::bytemuck::Zeroable for $InternalBitFlags
- where
- $T: $crate::__private::bytemuck::Zeroable,
+ unsafe impl $crate::__private::bytemuck::Zeroable for $InternalBitFlags where
+ $T: $crate::__private::bytemuck::Zeroable
{
-
}
};
}
-#[macro_export(local_inner_macros)]
+#[macro_export]
#[doc(hidden)]
#[cfg(not(feature = "bytemuck"))]
macro_rules! __impl_external_bitflags_bytemuck {
(
$InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
$(
- $(#[$attr:ident $($args:tt)*])*
- $Flag:ident;
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:tt;
)*
}
) => {};