diff --git a/src/features.rs b/src/features.rs index 9443069..e1f9dbe 100644 --- a/src/features.rs +++ b/src/features.rs @@ -1,13 +1,12 @@ //! Feature Bits use crate::le128; +use crate::sealed::Sealed; /// Feature Bits #[doc(alias = "VIRTIO_F")] -pub trait FeatureBits: bitflags::Flags -where - Self: From + AsRef + AsMut, - F: From + AsRef + AsMut, +pub trait FeatureBits: + bitflags::Flags + From + Into + AsRef + AsMut + Sealed { /// Returns the feature that this feature requires. /// @@ -240,6 +239,8 @@ impl AsMut for F { impl FeatureBits for F {} +impl Sealed for F {} + macro_rules! feature_bits { ( $(#[$outer:meta])* @@ -334,6 +335,8 @@ macro_rules! feature_bits { } } + impl $crate::sealed::Sealed for $BitFlags {} + feature_bits! { $($t)* } diff --git a/src/lib.rs b/src/lib.rs index b7c3708..b4152af 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -109,6 +109,10 @@ pub mod pvirtq; pub mod virtq; pub mod vsock; +mod sealed { + pub trait Sealed {} +} + pub use endian_num::{be128, be16, be32, be64, le128, le16, le32, le64, Be, Le}; use num_enum::{FromPrimitive, IntoPrimitive, TryFromPrimitive};