Coverage Report

Created: 2024-12-17 06:15

/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
}