/rust/registry/src/index.crates.io-6f17d22bba15001f/bitflags-2.6.0/src/traits.rs
Line | Count | Source (jump to first uncovered line) |
1 | | use core::{ |
2 | | fmt, |
3 | | ops::{BitAnd, BitOr, BitXor, Not}, |
4 | | }; |
5 | | |
6 | | use crate::{ |
7 | | iter, |
8 | | parser::{ParseError, ParseHex, WriteHex}, |
9 | | }; |
10 | | |
11 | | /** |
12 | | A defined flags value that may be named or unnamed. |
13 | | */ |
14 | | #[derive(Debug)] |
15 | | pub struct Flag<B> { |
16 | | name: &'static str, |
17 | | value: B, |
18 | | } |
19 | | |
20 | | impl<B> Flag<B> { |
21 | | /** |
22 | | Define a flag. |
23 | | |
24 | | If `name` is non-empty then the flag is named, otherwise it's unnamed. |
25 | | */ |
26 | 0 | pub const fn new(name: &'static str, value: B) -> Self { |
27 | 0 | Flag { name, value } |
28 | 0 | } |
29 | | |
30 | | /** |
31 | | Get the name of this flag. |
32 | | |
33 | | If the flag is unnamed then the returned string will be empty. |
34 | | */ |
35 | 0 | pub const fn name(&self) -> &'static str { |
36 | 0 | self.name |
37 | 0 | } Unexecuted instantiation: <bitflags::traits::Flag<procfs::process::FDPermissions>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs::sys::kernel::AllowedFunctions>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs::sys::fs::binfmt_misc::BinFmtFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::prctl::PointerAuthenticationKeys>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::fs::ioctl::IFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::fs::xattr::XattrFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::thread::prctl::TaggedAddressMode>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::thread::prctl::CapabilitiesSecureBits>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::thread::setns::UnshareFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::thread::setns::ThreadNameSpaceType>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::thread::libcap::CapabilityFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::membarrier::MembarrierQuery>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::pidfd_getfd::PidfdGetfdFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::wait::WaitOptions>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::wait::WaitidOptions>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::pidfd::PidfdFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::prctl::UnalignedAccessControl>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::prctl::SpeculationFeatureState>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::prctl::SpeculationFeatureControl>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::prctl::FloatingPointExceptionMode>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::prctl::FloatingPointEmulationControl>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::MemfdFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::StatxFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::RenameFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::ResolveFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::FallocateFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::StatVfsMountFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::Mode>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::Access>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::OFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::AtFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::SealFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::inotify::WatchFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::inotify::CreateFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::inotify::ReadFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::io::types::ReadWriteFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::io::types::FdFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::io::types::DupFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::mount::types::MountFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::mount::types::UnmountFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::mount::types::InternalMountFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::mount::types::MountPropagationFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::thread::futex::Flags>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::kpageflags::PhysicalPageFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::net::ARPHardware>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::net::ARPFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::keyring::PermissionFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::keyring::KeyFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::CoredumpFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::MMPermissions>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::VmFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::StatFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::sys::kernel::AllowedFunctions>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::mount::NFSServerCaps>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::pagemap::SwapPageFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::pagemap::MemoryPageFlags>>::name Unexecuted instantiation: <bitflags::traits::Flag<_>>::name |
38 | | |
39 | | /** |
40 | | Get the flags value of this flag. |
41 | | */ |
42 | 0 | pub const fn value(&self) -> &B { |
43 | 0 | &self.value |
44 | 0 | } Unexecuted instantiation: <bitflags::traits::Flag<procfs::process::FDPermissions>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs::sys::kernel::AllowedFunctions>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs::sys::fs::binfmt_misc::BinFmtFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::prctl::PointerAuthenticationKeys>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::fs::ioctl::IFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::fs::xattr::XattrFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::thread::prctl::TaggedAddressMode>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::thread::prctl::CapabilitiesSecureBits>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::thread::setns::UnshareFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::thread::setns::ThreadNameSpaceType>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::thread::libcap::CapabilityFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::membarrier::MembarrierQuery>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::pidfd_getfd::PidfdGetfdFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::wait::WaitOptions>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::wait::WaitidOptions>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::pidfd::PidfdFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::prctl::UnalignedAccessControl>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::prctl::SpeculationFeatureState>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::prctl::SpeculationFeatureControl>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::prctl::FloatingPointExceptionMode>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::process::prctl::FloatingPointEmulationControl>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::MemfdFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::StatxFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::RenameFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::ResolveFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::FallocateFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::StatVfsMountFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::Mode>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::Access>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::OFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::AtFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::types::SealFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::inotify::WatchFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::inotify::CreateFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::fs::inotify::ReadFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::io::types::ReadWriteFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::io::types::FdFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::io::types::DupFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::mount::types::MountFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::mount::types::UnmountFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::mount::types::InternalMountFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::mount::types::MountPropagationFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<rustix::backend::thread::futex::Flags>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::kpageflags::PhysicalPageFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::net::ARPHardware>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::net::ARPFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::keyring::PermissionFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::keyring::KeyFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::CoredumpFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::MMPermissions>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::VmFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::StatFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::sys::kernel::AllowedFunctions>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::mount::NFSServerCaps>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::pagemap::SwapPageFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<procfs_core::process::pagemap::MemoryPageFlags>>::value Unexecuted instantiation: <bitflags::traits::Flag<_>>::value |
45 | | |
46 | | /** |
47 | | Whether the flag is named. |
48 | | |
49 | | If [`Flag::name`] returns a non-empty string then this method will return `true`. |
50 | | */ |
51 | 0 | pub const fn is_named(&self) -> bool { |
52 | 0 | !self.name.is_empty() |
53 | 0 | } |
54 | | |
55 | | /** |
56 | | Whether the flag is unnamed. |
57 | | |
58 | | If [`Flag::name`] returns a non-empty string then this method will return `false`. |
59 | | */ |
60 | 0 | pub const fn is_unnamed(&self) -> bool { |
61 | 0 | self.name.is_empty() |
62 | 0 | } |
63 | | } |
64 | | |
65 | | /** |
66 | | A set of defined flags using a bits type as storage. |
67 | | |
68 | | ## Implementing `Flags` |
69 | | |
70 | | This trait is implemented by the [`bitflags`](macro.bitflags.html) macro: |
71 | | |
72 | | ``` |
73 | | use bitflags::bitflags; |
74 | | |
75 | | bitflags! { |
76 | | struct MyFlags: u8 { |
77 | | const A = 1; |
78 | | const B = 1 << 1; |
79 | | } |
80 | | } |
81 | | ``` |
82 | | |
83 | | It can also be implemented manually: |
84 | | |
85 | | ``` |
86 | | use bitflags::{Flag, Flags}; |
87 | | |
88 | | struct MyFlags(u8); |
89 | | |
90 | | impl Flags for MyFlags { |
91 | | const FLAGS: &'static [Flag<Self>] = &[ |
92 | | Flag::new("A", MyFlags(1)), |
93 | | Flag::new("B", MyFlags(1 << 1)), |
94 | | ]; |
95 | | |
96 | | type Bits = u8; |
97 | | |
98 | | fn from_bits_retain(bits: Self::Bits) -> Self { |
99 | | MyFlags(bits) |
100 | | } |
101 | | |
102 | | fn bits(&self) -> Self::Bits { |
103 | | self.0 |
104 | | } |
105 | | } |
106 | | ``` |
107 | | |
108 | | ## Using `Flags` |
109 | | |
110 | | The `Flags` trait can be used generically to work with any flags types. In this example, |
111 | | we can count the number of defined named flags: |
112 | | |
113 | | ``` |
114 | | # use bitflags::{bitflags, Flags}; |
115 | | fn defined_flags<F: Flags>() -> usize { |
116 | | F::FLAGS.iter().filter(|f| f.is_named()).count() |
117 | | } |
118 | | |
119 | | bitflags! { |
120 | | struct MyFlags: u8 { |
121 | | const A = 1; |
122 | | const B = 1 << 1; |
123 | | const C = 1 << 2; |
124 | | |
125 | | const _ = !0; |
126 | | } |
127 | | } |
128 | | |
129 | | assert_eq!(3, defined_flags::<MyFlags>()); |
130 | | ``` |
131 | | */ |
132 | | pub trait Flags: Sized + 'static { |
133 | | /// The set of defined flags. |
134 | | const FLAGS: &'static [Flag<Self>]; |
135 | | |
136 | | /// The underlying bits type. |
137 | | type Bits: Bits; |
138 | | |
139 | | /// Get a flags value with all bits unset. |
140 | 0 | fn empty() -> Self { |
141 | 0 | Self::from_bits_retain(Self::Bits::EMPTY) |
142 | 0 | } Unexecuted instantiation: <procfs::process::FDPermissions as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs::sys::fs::binfmt_misc::BinFmtFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::MemfdFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::StatxFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::RenameFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::ResolveFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::FallocateFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::StatVfsMountFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::Mode as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::Access as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::OFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::AtFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::types::SealFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::process::membarrier::MembarrierQuery as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::mount::types::MountFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::mount::types::UnmountFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::mount::types::InternalMountFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::mount::types::MountPropagationFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::prctl::PointerAuthenticationKeys as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::fs::xattr::XattrFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::io::types::ReadWriteFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::io::types::FdFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::io::types::DupFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::process::prctl::UnalignedAccessControl as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureState as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureControl as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::process::prctl::FloatingPointExceptionMode as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::process::prctl::FloatingPointEmulationControl as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::fs::ioctl::IFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::thread::prctl::TaggedAddressMode as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::thread::prctl::CapabilitiesSecureBits as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::process::pidfd::PidfdFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::process::pidfd_getfd::PidfdGetfdFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::inotify::WatchFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::inotify::CreateFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::fs::inotify::ReadFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::backend::thread::futex::Flags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::thread::setns::UnshareFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::thread::setns::ThreadNameSpaceType as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::thread::libcap::CapabilityFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::process::wait::WaitOptions as bitflags::traits::Flags>::empty Unexecuted instantiation: <rustix::process::wait::WaitidOptions as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::process::mount::NFSServerCaps as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::keyring::PermissionFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::keyring::KeyFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::process::CoredumpFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::process::MMPermissions as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::process::VmFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::process::StatFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::process::pagemap::SwapPageFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::process::pagemap::MemoryPageFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::kpageflags::PhysicalPageFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::net::ARPHardware as bitflags::traits::Flags>::empty Unexecuted instantiation: <procfs_core::net::ARPFlags as bitflags::traits::Flags>::empty Unexecuted instantiation: <_ as bitflags::traits::Flags>::empty |
143 | | |
144 | | /// Get a flags value with all known bits set. |
145 | 0 | fn all() -> Self { |
146 | 0 | let mut truncated = Self::Bits::EMPTY; |
147 | | |
148 | 0 | for flag in Self::FLAGS.iter() { |
149 | 0 | truncated = truncated | flag.value().bits(); |
150 | 0 | } |
151 | | |
152 | 0 | Self::from_bits_retain(truncated) |
153 | 0 | } |
154 | | |
155 | | /// Get the underlying bits value. |
156 | | /// |
157 | | /// The returned value is exactly the bits set in this flags value. |
158 | | fn bits(&self) -> Self::Bits; |
159 | | |
160 | | /// Convert from a bits value. |
161 | | /// |
162 | | /// This method will return `None` if any unknown bits are set. |
163 | 0 | fn from_bits(bits: Self::Bits) -> Option<Self> { |
164 | 0 | let truncated = Self::from_bits_truncate(bits); |
165 | 0 |
|
166 | 0 | if truncated.bits() == bits { |
167 | 0 | Some(truncated) |
168 | | } else { |
169 | 0 | None |
170 | | } |
171 | 0 | } |
172 | | |
173 | | /// Convert from a bits value, unsetting any unknown bits. |
174 | 0 | fn from_bits_truncate(bits: Self::Bits) -> Self { |
175 | 0 | Self::from_bits_retain(bits & Self::all().bits()) |
176 | 0 | } |
177 | | |
178 | | /// Convert from a bits value exactly. |
179 | | fn from_bits_retain(bits: Self::Bits) -> Self; |
180 | | |
181 | | /// Get a flags value with the bits of a flag with the given name set. |
182 | | /// |
183 | | /// This method will return `None` if `name` is empty or doesn't |
184 | | /// correspond to any named flag. |
185 | 0 | fn from_name(name: &str) -> Option<Self> { |
186 | 0 | // Don't parse empty names as empty flags |
187 | 0 | if name.is_empty() { |
188 | 0 | return None; |
189 | 0 | } |
190 | | |
191 | 0 | for flag in Self::FLAGS { |
192 | 0 | if flag.name() == name { |
193 | 0 | return Some(Self::from_bits_retain(flag.value().bits())); |
194 | 0 | } |
195 | | } |
196 | | |
197 | 0 | None |
198 | 0 | } Unexecuted instantiation: <procfs::process::FDPermissions as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs::sys::fs::binfmt_misc::BinFmtFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::MemfdFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::StatxFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::RenameFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::ResolveFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::FallocateFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::StatVfsMountFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::Mode as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::Access as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::OFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::AtFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::types::SealFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::process::membarrier::MembarrierQuery as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::mount::types::MountFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::mount::types::UnmountFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::mount::types::InternalMountFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::mount::types::MountPropagationFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::prctl::PointerAuthenticationKeys as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::fs::xattr::XattrFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::io::types::ReadWriteFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::io::types::FdFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::io::types::DupFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::process::prctl::UnalignedAccessControl as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureState as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureControl as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::process::prctl::FloatingPointExceptionMode as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::process::prctl::FloatingPointEmulationControl as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::fs::ioctl::IFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::thread::prctl::TaggedAddressMode as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::thread::prctl::CapabilitiesSecureBits as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::process::pidfd::PidfdFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::process::pidfd_getfd::PidfdGetfdFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::inotify::WatchFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::inotify::CreateFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::fs::inotify::ReadFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::backend::thread::futex::Flags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::thread::setns::UnshareFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::thread::setns::ThreadNameSpaceType as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::thread::libcap::CapabilityFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::process::wait::WaitOptions as bitflags::traits::Flags>::from_name Unexecuted instantiation: <rustix::process::wait::WaitidOptions as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::process::mount::NFSServerCaps as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::keyring::PermissionFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::keyring::KeyFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::process::CoredumpFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::process::MMPermissions as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::process::VmFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::process::StatFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::process::pagemap::SwapPageFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::process::pagemap::MemoryPageFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::kpageflags::PhysicalPageFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::net::ARPHardware as bitflags::traits::Flags>::from_name Unexecuted instantiation: <procfs_core::net::ARPFlags as bitflags::traits::Flags>::from_name Unexecuted instantiation: <_ as bitflags::traits::Flags>::from_name |
199 | | |
200 | | /// Yield a set of contained flags values. |
201 | | /// |
202 | | /// Each yielded flags value will correspond to a defined named flag. Any unknown bits |
203 | | /// will be yielded together as a final flags value. |
204 | 0 | fn iter(&self) -> iter::Iter<Self> { |
205 | 0 | iter::Iter::new(self) |
206 | 0 | } |
207 | | |
208 | | /// Yield a set of contained named flags values. |
209 | | /// |
210 | | /// This method is like [`Flags::iter`], except only yields bits in contained named flags. |
211 | | /// Any unknown bits, or bits not corresponding to a contained flag will not be yielded. |
212 | 0 | fn iter_names(&self) -> iter::IterNames<Self> { |
213 | 0 | iter::IterNames::new(self) |
214 | 0 | } Unexecuted instantiation: <procfs::process::FDPermissions as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs::sys::fs::binfmt_misc::BinFmtFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::MemfdFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::StatxFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::RenameFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::ResolveFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::FallocateFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::StatVfsMountFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::Mode as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::Access as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::OFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::AtFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::types::SealFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::process::membarrier::MembarrierQuery as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::mount::types::MountFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::mount::types::UnmountFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::mount::types::InternalMountFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::mount::types::MountPropagationFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::prctl::PointerAuthenticationKeys as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::fs::xattr::XattrFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::io::types::ReadWriteFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::io::types::FdFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::io::types::DupFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::process::prctl::UnalignedAccessControl as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureState as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureControl as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::process::prctl::FloatingPointExceptionMode as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::process::prctl::FloatingPointEmulationControl as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::fs::ioctl::IFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::thread::prctl::TaggedAddressMode as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::thread::prctl::CapabilitiesSecureBits as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::process::pidfd::PidfdFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::process::pidfd_getfd::PidfdGetfdFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::inotify::WatchFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::inotify::CreateFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::fs::inotify::ReadFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::backend::thread::futex::Flags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::thread::setns::UnshareFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::thread::setns::ThreadNameSpaceType as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::thread::libcap::CapabilityFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::process::wait::WaitOptions as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <rustix::process::wait::WaitidOptions as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::process::mount::NFSServerCaps as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::keyring::PermissionFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::keyring::KeyFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::process::CoredumpFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::process::MMPermissions as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::process::VmFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::process::StatFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::process::pagemap::SwapPageFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::process::pagemap::MemoryPageFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::kpageflags::PhysicalPageFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::net::ARPHardware as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <procfs_core::net::ARPFlags as bitflags::traits::Flags>::iter_names Unexecuted instantiation: <_ as bitflags::traits::Flags>::iter_names |
215 | | |
216 | | /// Whether all bits in this flags value are unset. |
217 | 0 | fn is_empty(&self) -> bool { |
218 | 0 | self.bits() == Self::Bits::EMPTY |
219 | 0 | } Unexecuted instantiation: <procfs::process::FDPermissions as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs::sys::fs::binfmt_misc::BinFmtFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::MemfdFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::StatxFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::RenameFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::ResolveFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::FallocateFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::StatVfsMountFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::Mode as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::Access as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::OFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::AtFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::types::SealFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::process::membarrier::MembarrierQuery as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::mount::types::MountFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::mount::types::UnmountFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::mount::types::InternalMountFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::mount::types::MountPropagationFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::prctl::PointerAuthenticationKeys as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::fs::xattr::XattrFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::io::types::ReadWriteFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::io::types::FdFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::io::types::DupFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::process::prctl::UnalignedAccessControl as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureState as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureControl as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::process::prctl::FloatingPointExceptionMode as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::process::prctl::FloatingPointEmulationControl as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::fs::ioctl::IFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::thread::prctl::TaggedAddressMode as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::thread::prctl::CapabilitiesSecureBits as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::process::pidfd::PidfdFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::process::pidfd_getfd::PidfdGetfdFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::inotify::WatchFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::inotify::CreateFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::fs::inotify::ReadFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::backend::thread::futex::Flags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::thread::setns::UnshareFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::thread::setns::ThreadNameSpaceType as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::thread::libcap::CapabilityFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::process::wait::WaitOptions as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <rustix::process::wait::WaitidOptions as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::process::mount::NFSServerCaps as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::keyring::PermissionFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::keyring::KeyFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::process::CoredumpFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::process::MMPermissions as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::process::VmFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::process::StatFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::process::pagemap::SwapPageFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::process::pagemap::MemoryPageFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::kpageflags::PhysicalPageFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::net::ARPHardware as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <procfs_core::net::ARPFlags as bitflags::traits::Flags>::is_empty Unexecuted instantiation: <_ as bitflags::traits::Flags>::is_empty |
220 | | |
221 | | /// Whether all known bits in this flags value are set. |
222 | 0 | fn is_all(&self) -> bool { |
223 | 0 | // NOTE: We check against `Self::all` here, not `Self::Bits::ALL` |
224 | 0 | // because the set of all flags may not use all bits |
225 | 0 | Self::all().bits() | self.bits() == self.bits() |
226 | 0 | } |
227 | | |
228 | | /// Whether any set bits in a source flags value are also set in a target flags value. |
229 | 0 | fn intersects(&self, other: Self) -> bool |
230 | 0 | where |
231 | 0 | Self: Sized, |
232 | 0 | { |
233 | 0 | self.bits() & other.bits() != Self::Bits::EMPTY |
234 | 0 | } Unexecuted instantiation: <procfs::process::FDPermissions as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs::sys::fs::binfmt_misc::BinFmtFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::MemfdFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::StatxFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::RenameFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::ResolveFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::FallocateFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::StatVfsMountFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::Mode as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::Access as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::OFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::AtFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::types::SealFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::process::membarrier::MembarrierQuery as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::mount::types::MountFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::mount::types::UnmountFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::mount::types::InternalMountFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::mount::types::MountPropagationFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::prctl::PointerAuthenticationKeys as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::fs::xattr::XattrFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::io::types::ReadWriteFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::io::types::FdFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::io::types::DupFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::process::prctl::UnalignedAccessControl as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureState as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureControl as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::process::prctl::FloatingPointExceptionMode as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::process::prctl::FloatingPointEmulationControl as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::fs::ioctl::IFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::thread::prctl::TaggedAddressMode as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::thread::prctl::CapabilitiesSecureBits as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::process::pidfd::PidfdFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::process::pidfd_getfd::PidfdGetfdFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::inotify::WatchFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::inotify::CreateFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::fs::inotify::ReadFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::backend::thread::futex::Flags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::thread::setns::UnshareFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::thread::setns::ThreadNameSpaceType as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::thread::libcap::CapabilityFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::process::wait::WaitOptions as bitflags::traits::Flags>::intersects Unexecuted instantiation: <rustix::process::wait::WaitidOptions as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::process::mount::NFSServerCaps as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::keyring::PermissionFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::keyring::KeyFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::process::CoredumpFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::process::MMPermissions as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::process::VmFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::process::StatFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::process::pagemap::SwapPageFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::process::pagemap::MemoryPageFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::kpageflags::PhysicalPageFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::net::ARPHardware as bitflags::traits::Flags>::intersects Unexecuted instantiation: <procfs_core::net::ARPFlags as bitflags::traits::Flags>::intersects Unexecuted instantiation: <_ as bitflags::traits::Flags>::intersects |
235 | | |
236 | | /// Whether all set bits in a source flags value are also set in a target flags value. |
237 | 0 | fn contains(&self, other: Self) -> bool |
238 | 0 | where |
239 | 0 | Self: Sized, |
240 | 0 | { |
241 | 0 | self.bits() & other.bits() == other.bits() |
242 | 0 | } Unexecuted instantiation: <procfs::process::FDPermissions as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs::sys::fs::binfmt_misc::BinFmtFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::MemfdFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::StatxFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::RenameFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::ResolveFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::FallocateFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::StatVfsMountFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::Mode as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::Access as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::OFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::AtFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::types::SealFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::process::membarrier::MembarrierQuery as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::mount::types::MountFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::mount::types::UnmountFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::mount::types::InternalMountFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::mount::types::MountPropagationFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::prctl::PointerAuthenticationKeys as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::fs::xattr::XattrFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::io::types::ReadWriteFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::io::types::FdFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::io::types::DupFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::process::prctl::UnalignedAccessControl as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureState as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureControl as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::process::prctl::FloatingPointExceptionMode as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::process::prctl::FloatingPointEmulationControl as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::fs::ioctl::IFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::thread::prctl::TaggedAddressMode as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::thread::prctl::CapabilitiesSecureBits as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::process::pidfd::PidfdFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::process::pidfd_getfd::PidfdGetfdFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::inotify::WatchFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::inotify::CreateFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::fs::inotify::ReadFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::backend::thread::futex::Flags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::thread::setns::UnshareFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::thread::setns::ThreadNameSpaceType as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::thread::libcap::CapabilityFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::process::wait::WaitOptions as bitflags::traits::Flags>::contains Unexecuted instantiation: <rustix::process::wait::WaitidOptions as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::process::mount::NFSServerCaps as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::keyring::PermissionFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::keyring::KeyFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::process::CoredumpFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::process::MMPermissions as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::process::VmFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::process::StatFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::process::pagemap::SwapPageFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::process::pagemap::MemoryPageFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::kpageflags::PhysicalPageFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::net::ARPHardware as bitflags::traits::Flags>::contains Unexecuted instantiation: <procfs_core::net::ARPFlags as bitflags::traits::Flags>::contains Unexecuted instantiation: <_ as bitflags::traits::Flags>::contains |
243 | | |
244 | | /// The bitwise or (`|`) of the bits in two flags values. |
245 | 0 | fn insert(&mut self, other: Self) |
246 | 0 | where |
247 | 0 | Self: Sized, |
248 | 0 | { |
249 | 0 | *self = Self::from_bits_retain(self.bits()).union(other); |
250 | 0 | } Unexecuted instantiation: <procfs::process::FDPermissions as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs::sys::fs::binfmt_misc::BinFmtFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::MemfdFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::StatxFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::RenameFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::ResolveFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::FallocateFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::StatVfsMountFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::Mode as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::Access as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::OFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::AtFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::types::SealFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::process::membarrier::MembarrierQuery as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::mount::types::MountFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::mount::types::UnmountFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::mount::types::InternalMountFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::mount::types::MountPropagationFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::prctl::PointerAuthenticationKeys as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::fs::xattr::XattrFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::io::types::ReadWriteFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::io::types::FdFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::io::types::DupFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::process::prctl::UnalignedAccessControl as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureState as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureControl as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::process::prctl::FloatingPointExceptionMode as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::process::prctl::FloatingPointEmulationControl as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::fs::ioctl::IFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::thread::prctl::TaggedAddressMode as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::thread::prctl::CapabilitiesSecureBits as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::process::pidfd::PidfdFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::process::pidfd_getfd::PidfdGetfdFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::inotify::WatchFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::inotify::CreateFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::fs::inotify::ReadFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::backend::thread::futex::Flags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::thread::setns::UnshareFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::thread::setns::ThreadNameSpaceType as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::thread::libcap::CapabilityFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::process::wait::WaitOptions as bitflags::traits::Flags>::insert Unexecuted instantiation: <rustix::process::wait::WaitidOptions as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::process::mount::NFSServerCaps as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::keyring::PermissionFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::keyring::KeyFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::process::CoredumpFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::process::MMPermissions as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::process::VmFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::process::StatFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::process::pagemap::SwapPageFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::process::pagemap::MemoryPageFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::kpageflags::PhysicalPageFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::net::ARPHardware as bitflags::traits::Flags>::insert Unexecuted instantiation: <procfs_core::net::ARPFlags as bitflags::traits::Flags>::insert Unexecuted instantiation: <_ as bitflags::traits::Flags>::insert |
251 | | |
252 | | /// The intersection of a source flags value with the complement of a target flags value (`&!`). |
253 | | /// |
254 | | /// This method is not equivalent to `self & !other` when `other` has unknown bits set. |
255 | | /// `remove` won't truncate `other`, but the `!` operator will. |
256 | 0 | fn remove(&mut self, other: Self) |
257 | 0 | where |
258 | 0 | Self: Sized, |
259 | 0 | { |
260 | 0 | *self = Self::from_bits_retain(self.bits()).difference(other); |
261 | 0 | } Unexecuted instantiation: <procfs::process::FDPermissions as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs::sys::fs::binfmt_misc::BinFmtFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::MemfdFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::StatxFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::RenameFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::ResolveFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::FallocateFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::StatVfsMountFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::Mode as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::Access as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::OFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::AtFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::types::SealFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::process::membarrier::MembarrierQuery as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::mount::types::MountFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::mount::types::UnmountFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::mount::types::InternalMountFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::mount::types::MountPropagationFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::prctl::PointerAuthenticationKeys as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::fs::xattr::XattrFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::io::types::ReadWriteFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::io::types::FdFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::io::types::DupFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::process::prctl::UnalignedAccessControl as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureState as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureControl as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::process::prctl::FloatingPointExceptionMode as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::process::prctl::FloatingPointEmulationControl as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::fs::ioctl::IFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::thread::prctl::TaggedAddressMode as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::thread::prctl::CapabilitiesSecureBits as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::process::pidfd::PidfdFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::process::pidfd_getfd::PidfdGetfdFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::inotify::WatchFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::inotify::CreateFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::fs::inotify::ReadFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::backend::thread::futex::Flags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::thread::setns::UnshareFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::thread::setns::ThreadNameSpaceType as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::thread::libcap::CapabilityFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::process::wait::WaitOptions as bitflags::traits::Flags>::remove Unexecuted instantiation: <rustix::process::wait::WaitidOptions as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::process::mount::NFSServerCaps as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::keyring::PermissionFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::keyring::KeyFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::process::CoredumpFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::process::MMPermissions as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::process::VmFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::process::StatFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::process::pagemap::SwapPageFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::process::pagemap::MemoryPageFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::kpageflags::PhysicalPageFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::net::ARPHardware as bitflags::traits::Flags>::remove Unexecuted instantiation: <procfs_core::net::ARPFlags as bitflags::traits::Flags>::remove Unexecuted instantiation: <_ as bitflags::traits::Flags>::remove |
262 | | |
263 | | /// The bitwise exclusive-or (`^`) of the bits in two flags values. |
264 | 0 | fn toggle(&mut self, other: Self) |
265 | 0 | where |
266 | 0 | Self: Sized, |
267 | 0 | { |
268 | 0 | *self = Self::from_bits_retain(self.bits()).symmetric_difference(other); |
269 | 0 | } |
270 | | |
271 | | /// Call [`Flags::insert`] when `value` is `true` or [`Flags::remove`] when `value` is `false`. |
272 | 0 | fn set(&mut self, other: Self, value: bool) |
273 | 0 | where |
274 | 0 | Self: Sized, |
275 | 0 | { |
276 | 0 | if value { |
277 | 0 | self.insert(other); |
278 | 0 | } else { |
279 | 0 | self.remove(other); |
280 | 0 | } |
281 | 0 | } |
282 | | |
283 | | /// The bitwise and (`&`) of the bits in two flags values. |
284 | | #[must_use] |
285 | 0 | fn intersection(self, other: Self) -> Self { |
286 | 0 | Self::from_bits_retain(self.bits() & other.bits()) |
287 | 0 | } |
288 | | |
289 | | /// The bitwise or (`|`) of the bits in two flags values. |
290 | | #[must_use] |
291 | 0 | fn union(self, other: Self) -> Self { |
292 | 0 | Self::from_bits_retain(self.bits() | other.bits()) |
293 | 0 | } Unexecuted instantiation: <procfs::process::FDPermissions as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs::sys::fs::binfmt_misc::BinFmtFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::MemfdFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::StatxFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::RenameFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::ResolveFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::FallocateFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::StatVfsMountFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::Mode as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::Access as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::OFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::AtFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::types::SealFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::process::membarrier::MembarrierQuery as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::mount::types::MountFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::mount::types::UnmountFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::mount::types::InternalMountFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::mount::types::MountPropagationFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::prctl::PointerAuthenticationKeys as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::fs::xattr::XattrFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::io::types::ReadWriteFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::io::types::FdFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::io::types::DupFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::process::prctl::UnalignedAccessControl as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureState as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureControl as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::process::prctl::FloatingPointExceptionMode as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::process::prctl::FloatingPointEmulationControl as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::fs::ioctl::IFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::thread::prctl::TaggedAddressMode as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::thread::prctl::CapabilitiesSecureBits as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::process::pidfd::PidfdFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::process::pidfd_getfd::PidfdGetfdFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::inotify::WatchFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::inotify::CreateFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::fs::inotify::ReadFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::backend::thread::futex::Flags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::thread::setns::UnshareFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::thread::setns::ThreadNameSpaceType as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::thread::libcap::CapabilityFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::process::wait::WaitOptions as bitflags::traits::Flags>::union Unexecuted instantiation: <rustix::process::wait::WaitidOptions as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::process::mount::NFSServerCaps as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::keyring::PermissionFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::keyring::KeyFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::process::CoredumpFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::process::MMPermissions as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::process::VmFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::process::StatFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::process::pagemap::SwapPageFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::process::pagemap::MemoryPageFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::kpageflags::PhysicalPageFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::net::ARPHardware as bitflags::traits::Flags>::union Unexecuted instantiation: <procfs_core::net::ARPFlags as bitflags::traits::Flags>::union Unexecuted instantiation: <_ as bitflags::traits::Flags>::union |
294 | | |
295 | | /// The intersection of a source flags value with the complement of a target flags value (`&!`). |
296 | | /// |
297 | | /// This method is not equivalent to `self & !other` when `other` has unknown bits set. |
298 | | /// `difference` won't truncate `other`, but the `!` operator will. |
299 | | #[must_use] |
300 | 0 | fn difference(self, other: Self) -> Self { |
301 | 0 | Self::from_bits_retain(self.bits() & !other.bits()) |
302 | 0 | } Unexecuted instantiation: <procfs::process::FDPermissions as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs::sys::fs::binfmt_misc::BinFmtFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::MemfdFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::StatxFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::RenameFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::ResolveFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::FallocateFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::StatVfsMountFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::Mode as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::Access as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::OFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::AtFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::types::SealFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::process::membarrier::MembarrierQuery as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::mount::types::MountFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::mount::types::UnmountFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::mount::types::InternalMountFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::mount::types::MountPropagationFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::prctl::PointerAuthenticationKeys as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::fs::xattr::XattrFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::io::types::ReadWriteFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::io::types::FdFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::io::types::DupFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::process::prctl::UnalignedAccessControl as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureState as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::process::prctl::SpeculationFeatureControl as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::process::prctl::FloatingPointExceptionMode as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::process::prctl::FloatingPointEmulationControl as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::fs::ioctl::IFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::thread::prctl::TaggedAddressMode as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::thread::prctl::CapabilitiesSecureBits as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::process::pidfd::PidfdFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::process::pidfd_getfd::PidfdGetfdFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::inotify::WatchFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::inotify::CreateFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::fs::inotify::ReadFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::backend::thread::futex::Flags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::thread::setns::UnshareFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::thread::setns::ThreadNameSpaceType as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::thread::libcap::CapabilityFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::process::wait::WaitOptions as bitflags::traits::Flags>::difference Unexecuted instantiation: <rustix::process::wait::WaitidOptions as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::process::mount::NFSServerCaps as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::keyring::PermissionFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::keyring::KeyFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::process::CoredumpFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::process::MMPermissions as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::process::VmFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::process::StatFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::sys::kernel::AllowedFunctions as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::process::pagemap::SwapPageFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::process::pagemap::MemoryPageFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::kpageflags::PhysicalPageFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::net::ARPHardware as bitflags::traits::Flags>::difference Unexecuted instantiation: <procfs_core::net::ARPFlags as bitflags::traits::Flags>::difference Unexecuted instantiation: <_ as bitflags::traits::Flags>::difference |
303 | | |
304 | | /// The bitwise exclusive-or (`^`) of the bits in two flags values. |
305 | | #[must_use] |
306 | 0 | fn symmetric_difference(self, other: Self) -> Self { |
307 | 0 | Self::from_bits_retain(self.bits() ^ other.bits()) |
308 | 0 | } |
309 | | |
310 | | /// The bitwise negation (`!`) of the bits in a flags value, truncating the result. |
311 | | #[must_use] |
312 | 0 | fn complement(self) -> Self { |
313 | 0 | Self::from_bits_truncate(!self.bits()) |
314 | 0 | } |
315 | | } |
316 | | |
317 | | /** |
318 | | A bits type that can be used as storage for a flags type. |
319 | | */ |
320 | | pub trait Bits: |
321 | | Clone |
322 | | + Copy |
323 | | + PartialEq |
324 | | + BitAnd<Output = Self> |
325 | | + BitOr<Output = Self> |
326 | | + BitXor<Output = Self> |
327 | | + Not<Output = Self> |
328 | | + Sized |
329 | | + 'static |
330 | | { |
331 | | /// A value with all bits unset. |
332 | | const EMPTY: Self; |
333 | | |
334 | | /// A value with all bits set. |
335 | | const ALL: Self; |
336 | | } |
337 | | |
338 | | // Not re-exported: prevent custom `Bits` impls being used in the `bitflags!` macro, |
339 | | // or they may fail to compile based on crate features |
340 | | pub trait Primitive {} |
341 | | |
342 | | macro_rules! impl_bits { |
343 | | ($($u:ty, $i:ty,)*) => { |
344 | | $( |
345 | | impl Bits for $u { |
346 | | const EMPTY: $u = 0; |
347 | | const ALL: $u = <$u>::MAX; |
348 | | } |
349 | | |
350 | | impl Bits for $i { |
351 | | const EMPTY: $i = 0; |
352 | | const ALL: $i = <$u>::MAX as $i; |
353 | | } |
354 | | |
355 | | impl ParseHex for $u { |
356 | 0 | fn parse_hex(input: &str) -> Result<Self, ParseError> { |
357 | 0 | <$u>::from_str_radix(input, 16).map_err(|_| ParseError::invalid_hex_flag(input)) Unexecuted instantiation: <u8 as bitflags::parser::ParseHex>::parse_hex::{closure#0} Unexecuted instantiation: <u16 as bitflags::parser::ParseHex>::parse_hex::{closure#0} Unexecuted instantiation: <u32 as bitflags::parser::ParseHex>::parse_hex::{closure#0} Unexecuted instantiation: <u64 as bitflags::parser::ParseHex>::parse_hex::{closure#0} Unexecuted instantiation: <u128 as bitflags::parser::ParseHex>::parse_hex::{closure#0} Unexecuted instantiation: <usize as bitflags::parser::ParseHex>::parse_hex::{closure#0} |
358 | 0 | } Unexecuted instantiation: <u8 as bitflags::parser::ParseHex>::parse_hex Unexecuted instantiation: <u16 as bitflags::parser::ParseHex>::parse_hex Unexecuted instantiation: <u32 as bitflags::parser::ParseHex>::parse_hex Unexecuted instantiation: <u64 as bitflags::parser::ParseHex>::parse_hex Unexecuted instantiation: <u128 as bitflags::parser::ParseHex>::parse_hex Unexecuted instantiation: <usize as bitflags::parser::ParseHex>::parse_hex |
359 | | } |
360 | | |
361 | | impl ParseHex for $i { |
362 | 0 | fn parse_hex(input: &str) -> Result<Self, ParseError> { |
363 | 0 | <$i>::from_str_radix(input, 16).map_err(|_| ParseError::invalid_hex_flag(input)) Unexecuted instantiation: <i8 as bitflags::parser::ParseHex>::parse_hex::{closure#0} Unexecuted instantiation: <i16 as bitflags::parser::ParseHex>::parse_hex::{closure#0} Unexecuted instantiation: <i32 as bitflags::parser::ParseHex>::parse_hex::{closure#0} Unexecuted instantiation: <i64 as bitflags::parser::ParseHex>::parse_hex::{closure#0} Unexecuted instantiation: <i128 as bitflags::parser::ParseHex>::parse_hex::{closure#0} Unexecuted instantiation: <isize as bitflags::parser::ParseHex>::parse_hex::{closure#0} |
364 | 0 | } Unexecuted instantiation: <i8 as bitflags::parser::ParseHex>::parse_hex Unexecuted instantiation: <i16 as bitflags::parser::ParseHex>::parse_hex Unexecuted instantiation: <i32 as bitflags::parser::ParseHex>::parse_hex Unexecuted instantiation: <i64 as bitflags::parser::ParseHex>::parse_hex Unexecuted instantiation: <i128 as bitflags::parser::ParseHex>::parse_hex Unexecuted instantiation: <isize as bitflags::parser::ParseHex>::parse_hex |
365 | | } |
366 | | |
367 | | impl WriteHex for $u { |
368 | 0 | fn write_hex<W: fmt::Write>(&self, mut writer: W) -> fmt::Result { |
369 | 0 | write!(writer, "{:x}", self) |
370 | 0 | } Unexecuted instantiation: <u32 as bitflags::parser::WriteHex>::write_hex::<&mut core::fmt::Formatter> Unexecuted instantiation: <u64 as bitflags::parser::WriteHex>::write_hex::<&mut core::fmt::Formatter> Unexecuted instantiation: <u8 as bitflags::parser::WriteHex>::write_hex::<&mut core::fmt::Formatter> Unexecuted instantiation: <u16 as bitflags::parser::WriteHex>::write_hex::<&mut core::fmt::Formatter> Unexecuted instantiation: <u32 as bitflags::parser::WriteHex>::write_hex::<&mut core::fmt::Formatter> Unexecuted instantiation: <u64 as bitflags::parser::WriteHex>::write_hex::<&mut core::fmt::Formatter> Unexecuted instantiation: <u8 as bitflags::parser::WriteHex>::write_hex::<_> Unexecuted instantiation: <u16 as bitflags::parser::WriteHex>::write_hex::<_> Unexecuted instantiation: <u32 as bitflags::parser::WriteHex>::write_hex::<_> Unexecuted instantiation: <u64 as bitflags::parser::WriteHex>::write_hex::<_> Unexecuted instantiation: <u128 as bitflags::parser::WriteHex>::write_hex::<_> Unexecuted instantiation: <usize as bitflags::parser::WriteHex>::write_hex::<_> |
371 | | } |
372 | | |
373 | | impl WriteHex for $i { |
374 | 0 | fn write_hex<W: fmt::Write>(&self, mut writer: W) -> fmt::Result { |
375 | 0 | write!(writer, "{:x}", self) |
376 | 0 | } Unexecuted instantiation: <i8 as bitflags::parser::WriteHex>::write_hex::<_> Unexecuted instantiation: <i16 as bitflags::parser::WriteHex>::write_hex::<_> Unexecuted instantiation: <i32 as bitflags::parser::WriteHex>::write_hex::<_> Unexecuted instantiation: <i64 as bitflags::parser::WriteHex>::write_hex::<_> Unexecuted instantiation: <i128 as bitflags::parser::WriteHex>::write_hex::<_> Unexecuted instantiation: <isize as bitflags::parser::WriteHex>::write_hex::<_> |
377 | | } |
378 | | |
379 | | impl Primitive for $i {} |
380 | | impl Primitive for $u {} |
381 | | )* |
382 | | } |
383 | | } |
384 | | |
385 | | impl_bits! { |
386 | | u8, i8, |
387 | | u16, i16, |
388 | | u32, i32, |
389 | | u64, i64, |
390 | | u128, i128, |
391 | | usize, isize, |
392 | | } |
393 | | |
394 | | /// A trait for referencing the `bitflags`-owned internal type |
395 | | /// without exposing it publicly. |
396 | | pub trait PublicFlags { |
397 | | /// The type of the underlying storage. |
398 | | type Primitive: Primitive; |
399 | | |
400 | | /// The type of the internal field on the generated flags type. |
401 | | type Internal; |
402 | | } |
403 | | |
404 | | #[doc(hidden)] |
405 | | #[deprecated(note = "use the `Flags` trait instead")] |
406 | | pub trait BitFlags: ImplementedByBitFlagsMacro + Flags { |
407 | | /// An iterator over enabled flags in an instance of the type. |
408 | | type Iter: Iterator<Item = Self>; |
409 | | |
410 | | /// An iterator over the raw names and bits for enabled flags in an instance of the type. |
411 | | type IterNames: Iterator<Item = (&'static str, Self)>; |
412 | | } |
413 | | |
414 | | #[allow(deprecated)] |
415 | | impl<B: Flags> BitFlags for B { |
416 | | type Iter = iter::Iter<Self>; |
417 | | type IterNames = iter::IterNames<Self>; |
418 | | } |
419 | | |
420 | | impl<B: Flags> ImplementedByBitFlagsMacro for B {} |
421 | | |
422 | | /// A marker trait that signals that an implementation of `BitFlags` came from the `bitflags!` macro. |
423 | | /// |
424 | | /// There's nothing stopping an end-user from implementing this trait, but we don't guarantee their |
425 | | /// manual implementations won't break between non-breaking releases. |
426 | | #[doc(hidden)] |
427 | | pub trait ImplementedByBitFlagsMacro {} |
428 | | |
429 | | pub(crate) mod __private { |
430 | | pub use super::{ImplementedByBitFlagsMacro, PublicFlags}; |
431 | | } |