Coverage Report

Created: 2026-06-07 06:39

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/bitflags-2.13.0/src/traits.rs
Line
Count
Source
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
    }
Unexecuted instantiation: <bitflags::traits::Flag<_>>::new
Unexecuted instantiation: <bitflags::traits::Flag<_>>::new
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<x86_64::structures::gdt::DescriptorFlags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::structures::idt::PageFaultErrorCode>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::model_specific::CetFlags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::model_specific::EferFlags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::debug::Dr6Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::debug::Dr7Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::mxcsr::MxCsr>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::rflags::RFlags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr0Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr3Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr4Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::xcontrol::XCr0Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::structures::paging::page_table::PageTableFlags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<_>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::structures::gdt::DescriptorFlags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::structures::idt::PageFaultErrorCode>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::model_specific::CetFlags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::model_specific::EferFlags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::debug::Dr6Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::debug::Dr7Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::mxcsr::MxCsr>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::rflags::RFlags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr0Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr3Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr4Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::xcontrol::XCr0Flags>>::name
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::structures::paging::page_table::PageTableFlags>>::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<x86_64::structures::gdt::DescriptorFlags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::structures::idt::PageFaultErrorCode>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::model_specific::CetFlags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::model_specific::EferFlags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::debug::Dr6Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::debug::Dr7Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::mxcsr::MxCsr>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::rflags::RFlags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr0Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr3Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr4Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::xcontrol::XCr0Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::structures::paging::page_table::PageTableFlags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<_>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::structures::gdt::DescriptorFlags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::structures::idt::PageFaultErrorCode>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::model_specific::CetFlags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::model_specific::EferFlags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::debug::Dr6Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::debug::Dr7Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::mxcsr::MxCsr>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::rflags::RFlags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr0Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr3Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::control::Cr4Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::registers::xcontrol::XCr0Flags>>::value
Unexecuted instantiation: <bitflags::traits::Flag<x86_64::structures::paging::page_table::PageTableFlags>>::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
    }
Unexecuted instantiation: <bitflags::traits::Flag<_>>::is_named
Unexecuted instantiation: <bitflags::traits::Flag<_>>::is_named
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
    }
Unexecuted instantiation: <bitflags::traits::Flag<_>>::is_unnamed
Unexecuted instantiation: <bitflags::traits::Flag<_>>::is_unnamed
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: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <_ as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::empty
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags 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
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::all
Unexecuted instantiation: <_ as bitflags::traits::Flags>::all
154
155
    /// Get a flags value with all bits from named flags set.
156
    ///
157
    /// This method is equivalent to [`Flags::all`] unless [`Flags::FLAGS`] contains unnamed flags.
158
0
    fn all_named() -> Self {
159
0
        Self::from_bits_retain(
160
0
            Self::FLAGS
161
0
                .iter()
162
0
                .filter(|f| !f.name().is_empty())
Unexecuted instantiation: <_ as bitflags::traits::Flags>::all_named::{closure#0}
Unexecuted instantiation: <_ as bitflags::traits::Flags>::all_named::{closure#0}
163
0
                .fold(Self::empty().bits(), |acc, f| acc | f.value().bits()),
Unexecuted instantiation: <_ as bitflags::traits::Flags>::all_named::{closure#1}
Unexecuted instantiation: <_ as bitflags::traits::Flags>::all_named::{closure#1}
164
        )
165
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::all_named
Unexecuted instantiation: <_ as bitflags::traits::Flags>::all_named
166
167
    /// Get the known bits from a flags value.
168
0
    fn known_bits(&self) -> Self::Bits {
169
0
        self.bits() & Self::all().bits()
170
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::known_bits
Unexecuted instantiation: <_ as bitflags::traits::Flags>::known_bits
171
172
    /// Get the unknown bits from a flags value.
173
0
    fn unknown_bits(&self) -> Self::Bits {
174
0
        self.bits() & !Self::all().bits()
175
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::unknown_bits
Unexecuted instantiation: <_ as bitflags::traits::Flags>::unknown_bits
176
177
    /// This method will return `true` if any unknown bits are set.
178
0
    fn contains_unknown_bits(&self) -> bool {
179
0
        self.unknown_bits() != Self::Bits::EMPTY
180
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::contains_unknown_bits
Unexecuted instantiation: <_ as bitflags::traits::Flags>::contains_unknown_bits
181
182
    /// Get the underlying bits value.
183
    ///
184
    /// The returned value is exactly the bits set in this flags value.
185
    fn bits(&self) -> Self::Bits;
186
187
    /// Convert from a bits value.
188
    ///
189
    /// This method will return `None` if any unknown bits are set.
190
0
    fn from_bits(bits: Self::Bits) -> Option<Self> {
191
0
        let truncated = Self::from_bits_truncate(bits);
192
193
0
        if truncated.bits() == bits {
194
0
            Some(truncated)
195
        } else {
196
0
            None
197
        }
198
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::from_bits
Unexecuted instantiation: <_ as bitflags::traits::Flags>::from_bits
199
200
    /// Convert from a bits value, unsetting any unknown bits.
201
0
    fn from_bits_truncate(bits: Self::Bits) -> Self {
202
0
        Self::from_bits_retain(bits & Self::all().bits())
203
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::from_bits_truncate
Unexecuted instantiation: <_ as bitflags::traits::Flags>::from_bits_truncate
204
205
    /// Convert from a bits value exactly.
206
    fn from_bits_retain(bits: Self::Bits) -> Self;
207
208
    /// Get a flags value with the bits of a flag with the given name set.
209
    ///
210
    /// This method will return `None` if `name` is empty or doesn't
211
    /// correspond to any named flag.
212
0
    fn from_name(name: &str) -> Option<Self> {
213
        // Don't parse empty names as empty flags
214
0
        if name.is_empty() {
215
0
            return None;
216
0
        }
217
218
0
        for flag in Self::FLAGS {
219
0
            if flag.name() == name {
220
0
                return Some(Self::from_bits_retain(flag.value().bits()));
221
0
            }
222
        }
223
224
0
        None
225
0
    }
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <_ as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::from_name
Unexecuted instantiation: <_ as bitflags::traits::Flags>::from_name
226
227
    /// Yield a set of contained flags values.
228
    ///
229
    /// Each yielded flags value will correspond to a defined named flag. Any unknown bits
230
    /// will be yielded together as a final flags value.
231
0
    fn iter(&self) -> iter::Iter<Self> {
232
0
        iter::Iter::new(self)
233
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::iter
Unexecuted instantiation: <_ as bitflags::traits::Flags>::iter
234
235
    /// Yield a set of contained named flags values.
236
    ///
237
    /// This method is like [`Flags::iter`], except only yields bits in contained named flags.
238
    /// Any unknown bits, or bits not corresponding to a contained flag will not be yielded.
239
0
    fn iter_names(&self) -> iter::IterNames<Self> {
240
0
        iter::IterNames::new(self)
241
0
    }
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <_ as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::iter_names
Unexecuted instantiation: <_ as bitflags::traits::Flags>::iter_names
242
243
    /// Yield a set of all named flags defined by [`Self::FLAGS`].
244
0
    fn iter_defined_names() -> iter::IterDefinedNames<Self> {
245
0
        iter::IterDefinedNames::new()
246
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::iter_defined_names
Unexecuted instantiation: <_ as bitflags::traits::Flags>::iter_defined_names
247
248
    /// Get an iterator over all defined names for this flags value.
249
    ///
250
    /// This iterator will yield all defined names for the flags value, including
251
    /// any convenience flags.
252
0
    fn iter_equal_names(&self) -> iter::IterEqualNames<Self> {
253
0
        iter::IterEqualNames::new(self)
254
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::iter_equal_names
Unexecuted instantiation: <_ as bitflags::traits::Flags>::iter_equal_names
255
256
    /// Whether all bits in this flags value are unset.
257
0
    fn is_empty(&self) -> bool {
258
0
        self.bits() == Self::Bits::EMPTY
259
0
    }
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <_ as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::is_empty
Unexecuted instantiation: <_ as bitflags::traits::Flags>::is_empty
260
261
    /// Whether all known bits in this flags value are set.
262
0
    fn is_all(&self) -> bool {
263
        // NOTE: We check against `Self::all` here, not `Self::Bits::ALL`
264
        // because the set of all flags may not use all bits
265
0
        Self::all().bits() | self.bits() == self.bits()
266
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::is_all
Unexecuted instantiation: <_ as bitflags::traits::Flags>::is_all
267
268
    /// Whether any set bits in `other` are also set in `self`.
269
0
    fn intersects(&self, other: Self) -> bool
270
0
    where
271
0
        Self: Sized,
272
    {
273
0
        self.bits() & other.bits() != Self::Bits::EMPTY
274
0
    }
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <_ as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::intersects
Unexecuted instantiation: <_ as bitflags::traits::Flags>::intersects
275
276
    /// Whether all set bits in `other` are also set in `self`.
277
0
    fn contains(&self, other: Self) -> bool
278
0
    where
279
0
        Self: Sized,
280
    {
281
0
        self.bits() & other.bits() == other.bits()
282
0
    }
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <_ as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::contains
Unexecuted instantiation: <_ as bitflags::traits::Flags>::contains
283
284
    /// Remove any unknown bits from the flags.
285
0
    fn truncate(&mut self)
286
0
    where
287
0
        Self: Sized,
288
    {
289
0
        *self = Self::from_bits_truncate(self.bits());
290
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::truncate
Unexecuted instantiation: <_ as bitflags::traits::Flags>::truncate
291
292
    /// The bitwise or (`|`) of the bits in `self` and `other`.
293
0
    fn insert(&mut self, other: Self)
294
0
    where
295
0
        Self: Sized,
296
    {
297
0
        *self = Self::from_bits_retain(self.bits()).union(other);
298
0
    }
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <_ as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::insert
Unexecuted instantiation: <_ as bitflags::traits::Flags>::insert
299
300
    /// The intersection of `self` with the complement of `other` (`&!`).
301
    ///
302
    /// This method is not equivalent to `self & !other` when `other` has unknown bits set.
303
    /// `remove` won't truncate `other`, but the `!` operator will.
304
0
    fn remove(&mut self, other: Self)
305
0
    where
306
0
        Self: Sized,
307
    {
308
0
        *self = Self::from_bits_retain(self.bits()).difference(other);
309
0
    }
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <_ as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::remove
Unexecuted instantiation: <_ as bitflags::traits::Flags>::remove
310
311
    /// The bitwise exclusive-or (`^`) of the bits in `self` and `other`.
312
0
    fn toggle(&mut self, other: Self)
313
0
    where
314
0
        Self: Sized,
315
    {
316
0
        *self = Self::from_bits_retain(self.bits()).symmetric_difference(other);
317
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::toggle
Unexecuted instantiation: <_ as bitflags::traits::Flags>::toggle
318
319
    /// Call [`Flags::insert`] when `value` is `true` or [`Flags::remove`] when `value` is `false`.
320
0
    fn set(&mut self, other: Self, value: bool)
321
0
    where
322
0
        Self: Sized,
323
    {
324
0
        if value {
325
0
            self.insert(other);
326
0
        } else {
327
0
            self.remove(other);
328
0
        }
329
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::set
Unexecuted instantiation: <_ as bitflags::traits::Flags>::set
330
331
    /// Unsets all bits in the flags.
332
0
    fn clear(&mut self)
333
0
    where
334
0
        Self: Sized,
335
    {
336
0
        *self = Self::empty();
337
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::clear
Unexecuted instantiation: <_ as bitflags::traits::Flags>::clear
338
339
    /// The bitwise and (`&`) of the bits in `self` and `other`.
340
    #[must_use]
341
0
    fn intersection(self, other: Self) -> Self {
342
0
        Self::from_bits_retain(self.bits() & other.bits())
343
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::intersection
Unexecuted instantiation: <_ as bitflags::traits::Flags>::intersection
344
345
    /// The bitwise or (`|`) of the bits in `self` and `other`.
346
    #[must_use]
347
0
    fn union(self, other: Self) -> Self {
348
0
        Self::from_bits_retain(self.bits() | other.bits())
349
0
    }
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <_ as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::union
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::union
Unexecuted instantiation: <_ as bitflags::traits::Flags>::union
350
351
    /// The intersection of `self` with the complement of `other` (`&!`).
352
    ///
353
    /// This method is not equivalent to `self & !other` when `other` has unknown bits set.
354
    /// `difference` won't truncate `other`, but the `!` operator will.
355
    #[must_use]
356
0
    fn difference(self, other: Self) -> Self {
357
0
        Self::from_bits_retain(self.bits() & !other.bits())
358
0
    }
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <_ as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::structures::gdt::DescriptorFlags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::model_specific::CetFlags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::model_specific::EferFlags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::xcontrol::XCr0Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::debug::Dr6Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::debug::Dr7Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::structures::idt::PageFaultErrorCode as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::mxcsr::MxCsr as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::rflags::RFlags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::control::Cr0Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::control::Cr3Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::registers::control::Cr4Flags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <x86_64::structures::paging::page_table::PageTableFlags as bitflags::traits::Flags>::difference
Unexecuted instantiation: <_ as bitflags::traits::Flags>::difference
359
360
    /// The bitwise exclusive-or (`^`) of the bits in `self` and `other`.
361
    #[must_use]
362
0
    fn symmetric_difference(self, other: Self) -> Self {
363
0
        Self::from_bits_retain(self.bits() ^ other.bits())
364
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::symmetric_difference
Unexecuted instantiation: <_ as bitflags::traits::Flags>::symmetric_difference
365
366
    /// The bitwise negation (`!`) of the bits in `self`, truncating the result.
367
    #[must_use]
368
0
    fn complement(self) -> Self {
369
0
        Self::from_bits_truncate(!self.bits())
370
0
    }
Unexecuted instantiation: <_ as bitflags::traits::Flags>::complement
Unexecuted instantiation: <_ as bitflags::traits::Flags>::complement
371
}
372
373
/**
374
A bits type that can be used as storage for a flags type.
375
*/
376
pub trait Bits:
377
    Clone
378
    + Copy
379
    + PartialEq
380
    + BitAnd<Output = Self>
381
    + BitOr<Output = Self>
382
    + BitXor<Output = Self>
383
    + Not<Output = Self>
384
    + Sized
385
    + 'static
386
{
387
    /// A value with all bits unset.
388
    const EMPTY: Self;
389
390
    /// A value with all bits set.
391
    const ALL: Self;
392
}
393
394
// Not re-exported: prevent custom `Bits` impls being used in the `bitflags!` macro,
395
// or they may fail to compile based on crate features
396
pub trait Primitive {}
397
398
macro_rules! impl_bits {
399
    ($($u:ty, $i:ty,)*) => {
400
        $(
401
            impl Bits for $u {
402
                const EMPTY: $u = 0;
403
                const ALL: $u = <$u>::MAX;
404
            }
405
406
            impl Bits for $i {
407
                const EMPTY: $i = 0;
408
                const ALL: $i = <$u>::MAX as $i;
409
            }
410
411
            impl ParseHex for $u {
412
0
                fn parse_hex(input: &str) -> Result<Self, ParseError> {
413
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: <u128 as bitflags::parser::ParseHex>::parse_hex::{closure#0}
Unexecuted instantiation: <usize 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: <u8 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}
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}
414
0
                }
Unexecuted instantiation: <u8 as bitflags::parser::ParseHex>::parse_hex
Unexecuted instantiation: <u128 as bitflags::parser::ParseHex>::parse_hex
Unexecuted instantiation: <usize 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: <u8 as bitflags::parser::ParseHex>::parse_hex
Unexecuted instantiation: <u128 as bitflags::parser::ParseHex>::parse_hex
Unexecuted instantiation: <usize 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
415
            }
416
417
            impl ParseHex for $i {
418
0
                fn parse_hex(input: &str) -> Result<Self, ParseError> {
419
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: <i128 as bitflags::parser::ParseHex>::parse_hex::{closure#0}
Unexecuted instantiation: <isize 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: <i8 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}
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}
420
0
                }
Unexecuted instantiation: <i8 as bitflags::parser::ParseHex>::parse_hex
Unexecuted instantiation: <i128 as bitflags::parser::ParseHex>::parse_hex
Unexecuted instantiation: <isize 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: <i8 as bitflags::parser::ParseHex>::parse_hex
Unexecuted instantiation: <i128 as bitflags::parser::ParseHex>::parse_hex
Unexecuted instantiation: <isize 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
421
            }
422
423
            impl WriteHex for $u {
424
0
                fn write_hex<W: fmt::Write>(&self, mut writer: W) -> fmt::Result {
425
0
                    write!(writer, "{:x}", self)
426
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::<_>
Unexecuted instantiation: <u128 as bitflags::parser::WriteHex>::write_hex::<_>
Unexecuted instantiation: <usize 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: <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: <u128 as bitflags::parser::WriteHex>::write_hex::<_>
Unexecuted instantiation: <usize 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::<_>
427
            }
428
429
            impl WriteHex for $i {
430
0
                fn write_hex<W: fmt::Write>(&self, mut writer: W) -> fmt::Result {
431
0
                    write!(writer, "{:x}", self)
432
0
                }
Unexecuted instantiation: <i8 as bitflags::parser::WriteHex>::write_hex::<_>
Unexecuted instantiation: <i128 as bitflags::parser::WriteHex>::write_hex::<_>
Unexecuted instantiation: <isize 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: <i8 as bitflags::parser::WriteHex>::write_hex::<_>
Unexecuted instantiation: <i128 as bitflags::parser::WriteHex>::write_hex::<_>
Unexecuted instantiation: <isize 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::<_>
433
            }
434
435
            impl Primitive for $i {}
436
            impl Primitive for $u {}
437
        )*
438
    }
439
}
440
441
impl_bits! {
442
    u8, i8,
443
    u16, i16,
444
    u32, i32,
445
    u64, i64,
446
    u128, i128,
447
    usize, isize,
448
}
449
450
/// A trait for referencing the `bitflags`-owned internal type
451
/// without exposing it publicly.
452
pub trait PublicFlags {
453
    /// The type of the underlying storage.
454
    type Primitive: Primitive;
455
456
    /// The type of the internal field on the generated flags type.
457
    type Internal;
458
}
459
460
#[doc(hidden)]
461
#[deprecated(note = "use the `Flags` trait instead")]
462
pub trait BitFlags: ImplementedByBitFlagsMacro + Flags {
463
    /// An iterator over enabled flags in an instance of the type.
464
    type Iter: Iterator<Item = Self>;
465
466
    /// An iterator over the raw names and bits for enabled flags in an instance of the type.
467
    type IterNames: Iterator<Item = (&'static str, Self)>;
468
}
469
470
#[allow(deprecated)]
471
impl<B: Flags> BitFlags for B {
472
    type Iter = iter::Iter<Self>;
473
    type IterNames = iter::IterNames<Self>;
474
}
475
476
impl<B: Flags> ImplementedByBitFlagsMacro for B {}
477
478
/// A marker trait that signals that an implementation of `BitFlags` came from the `bitflags!` macro.
479
///
480
/// There's nothing stopping an end-user from implementing this trait, but we don't guarantee their
481
/// manual implementations won't break between non-breaking releases.
482
#[doc(hidden)]
483
pub trait ImplementedByBitFlagsMacro {}
484
485
pub(crate) mod __private {
486
    pub use super::{ImplementedByBitFlagsMacro, PublicFlags};
487
}