aboutsummaryrefslogtreecommitdiff
path: root/vendor/bitflags/src/external.rs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2024-07-19 15:37:58 +0300
committerValentin Popov <valentin@popov.link>2024-07-19 15:37:58 +0300
commita990de90fe41456a23e58bd087d2f107d321f3a1 (patch)
tree15afc392522a9e85dc3332235e311b7d39352ea9 /vendor/bitflags/src/external.rs
parent3d48cd3f81164bbfc1a755dc1d4a9a02f98c8ddd (diff)
downloadfparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.tar.xz
fparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.zip
Deleted vendor folder
Diffstat (limited to 'vendor/bitflags/src/external.rs')
-rw-r--r--vendor/bitflags/src/external.rs262
1 files changed, 0 insertions, 262 deletions
diff --git a/vendor/bitflags/src/external.rs b/vendor/bitflags/src/external.rs
deleted file mode 100644
index efeaa82..0000000
--- a/vendor/bitflags/src/external.rs
+++ /dev/null
@@ -1,262 +0,0 @@
-//! Conditional trait implementations for external libraries.
-
-/*
-How do I support a new external library?
-
-Let's say we want to add support for `my_library`.
-
-First, we create a module under `external`, like `serde` with any specialized code.
-Ideally, any utilities in here should just work off the `Flags` trait and maybe a
-few other assumed bounds.
-
-Next, re-export the library from the `__private` module here.
-
-Next, define a macro like so:
-
-```rust
-#[macro_export(local_inner_macros)]
-#[doc(hidden)]
-#[cfg(feature = "serde")]
-macro_rules! __impl_external_bitflags_my_library {
- (
- $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
- $(
- $(#[$inner:ident $($args:tt)*])*
- const $Flag:tt;
- )*
- }
- ) => {
- // Implementation goes here
- };
-}
-
-#[macro_export(local_inner_macros)]
-#[doc(hidden)]
-#[cfg(not(feature = "my_library"))]
-macro_rules! __impl_external_bitflags_my_library {
- (
- $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
- $(
- $(#[$inner:ident $($args:tt)*])*
- const $Flag:tt;
- )*
- }
- ) => {};
-}
-```
-
-Note that the macro is actually defined twice; once for when the `my_library` feature
-is available, and once for when it's not. This is because the `__impl_external_bitflags_my_library`
-macro is called in an end-user's library, not in `bitflags`. In an end-user's library we don't
-know whether or not a particular feature of `bitflags` is enabled, so we unconditionally call
-the macro, where the body of that macro depends on the feature flag.
-
-Now, we add our macro call to the `__impl_external_bitflags` macro body:
-
-```rust
-__impl_external_bitflags_my_library! {
- $InternalBitFlags: $T, $PublicBitFlags {
- $(
- $(#[$inner $($args)*])*
- const $Flag;
- )*
- }
-}
-```
-*/
-
-pub(crate) mod __private {
- #[cfg(feature = "serde")]
- pub use serde;
-
- #[cfg(feature = "arbitrary")]
- pub use arbitrary;
-
- #[cfg(feature = "bytemuck")]
- pub use bytemuck;
-}
-
-/// Implements traits from external libraries for the internal bitflags type.
-#[macro_export(local_inner_macros)]
-#[doc(hidden)]
-macro_rules! __impl_external_bitflags {
- (
- $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
- $(
- $(#[$inner:ident $($args:tt)*])*
- const $Flag:tt;
- )*
- }
- ) => {
- // Any new library traits impls should be added here
- // Use `serde` as an example: generate code when the feature is available,
- // and a no-op when it isn't
-
- __impl_external_bitflags_serde! {
- $InternalBitFlags: $T, $PublicBitFlags {
- $(
- $(#[$inner $($args)*])*
- const $Flag;
- )*
- }
- }
-
- __impl_external_bitflags_arbitrary! {
- $InternalBitFlags: $T, $PublicBitFlags {
- $(
- $(#[$inner $($args)*])*
- const $Flag;
- )*
- }
- }
-
- __impl_external_bitflags_bytemuck! {
- $InternalBitFlags: $T, $PublicBitFlags {
- $(
- $(#[$inner $($args)*])*
- const $Flag;
- )*
- }
- }
- };
-}
-
-#[cfg(feature = "serde")]
-pub mod serde;
-
-/// Implement `Serialize` and `Deserialize` for the internal bitflags type.
-#[macro_export(local_inner_macros)]
-#[doc(hidden)]
-#[cfg(feature = "serde")]
-macro_rules! __impl_external_bitflags_serde {
- (
- $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
- $(
- $(#[$inner:ident $($args:tt)*])*
- const $Flag:tt;
- )*
- }
- ) => {
- impl $crate::__private::serde::Serialize for $InternalBitFlags {
- fn serialize<S: $crate::__private::serde::Serializer>(
- &self,
- serializer: S,
- ) -> $crate::__private::core::result::Result<S::Ok, S::Error> {
- $crate::serde::serialize(
- &$PublicBitFlags::from_bits_retain(self.bits()),
- serializer,
- )
- }
- }
-
- impl<'de> $crate::__private::serde::Deserialize<'de> for $InternalBitFlags {
- 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)?;
-
- Ok(flags.0)
- }
- }
- };
-}
-
-#[macro_export(local_inner_macros)]
-#[doc(hidden)]
-#[cfg(not(feature = "serde"))]
-macro_rules! __impl_external_bitflags_serde {
- (
- $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
- $(
- $(#[$inner:ident $($args:tt)*])*
- const $Flag:tt;
- )*
- }
- ) => {};
-}
-
-#[cfg(feature = "arbitrary")]
-pub mod arbitrary;
-
-#[cfg(feature = "bytemuck")]
-mod bytemuck;
-
-/// Implement `Arbitrary` for the internal bitflags type.
-#[macro_export(local_inner_macros)]
-#[doc(hidden)]
-#[cfg(feature = "arbitrary")]
-macro_rules! __impl_external_bitflags_arbitrary {
- (
- $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
- $(
- $(#[$inner:ident $($args:tt)*])*
- const $Flag:tt;
- )*
- }
- ) => {
- impl<'a> $crate::__private::arbitrary::Arbitrary<'a> for $InternalBitFlags {
- fn arbitrary(
- u: &mut $crate::__private::arbitrary::Unstructured<'a>,
- ) -> $crate::__private::arbitrary::Result<Self> {
- $crate::arbitrary::arbitrary::<$PublicBitFlags>(u).map(|flags| flags.0)
- }
- }
- };
-}
-
-#[macro_export(local_inner_macros)]
-#[doc(hidden)]
-#[cfg(not(feature = "arbitrary"))]
-macro_rules! __impl_external_bitflags_arbitrary {
- (
- $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
- $(
- $(#[$inner:ident $($args:tt)*])*
- const $Flag:tt;
- )*
- }
- ) => {};
-}
-
-/// Implement `Pod` and `Zeroable` for the internal bitflags type.
-#[macro_export(local_inner_macros)]
-#[doc(hidden)]
-#[cfg(feature = "bytemuck")]
-macro_rules! __impl_external_bitflags_bytemuck {
- (
- $InternalBitFlags:ident: $T:ty, $PublicBitFlags: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
- {
- }
-
- // 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
- {
- }
- };
-}
-
-#[macro_export(local_inner_macros)]
-#[doc(hidden)]
-#[cfg(not(feature = "bytemuck"))]
-macro_rules! __impl_external_bitflags_bytemuck {
- (
- $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident {
- $(
- $(#[$inner:ident $($args:tt)*])*
- const $Flag:tt;
- )*
- }
- ) => {};
-}