Skip to main content

Withheld

Struct Withheld 

Source
pub struct Withheld(/* private fields */);
Expand description

Capabilities a context is to be built without, as a bitmask.

A set rather than one capability because a test may want a device short of two things at once, and a bitmask rather than a Vec because ContextConfig is Copy and a heap field would take that away from a published type. Hand-rolled over a u32 like SampleCounts above, for the same reason: this workspace has no bitflags dependency and does not need one.

The name is the type’s only job beyond storage. Nothing here can grant a capability, and a neutral name like CapabilitySet would invite someone to add that direction; Withheld makes it unsayable. Self::apply_to can clear a field and can do nothing else.

Implementations§

Source§

impl Withheld

Source

pub const fn none() -> Self

Withhold nothing, which is what every ordinary caller wants and what Default gives.

Source

pub const fn of(capability: Capability) -> Self

Withhold exactly one.

Source

pub const fn with(self, capability: Capability) -> Self

The same set with one more withheld.

Source

pub const fn contains(self, capability: Capability) -> bool

Whether this set withholds capability.

Source

pub const fn is_empty(self) -> bool

Whether this set withholds nothing.

Source

pub fn apply_to(self, capabilities: &mut Capabilities)

Clear every withheld capability from capabilities.

Clearing only. A capability already false stays false, so applying this to a device that never had the thing is a no-op rather than a promotion – which is what makes the set safe to apply unconditionally at the end of detection.

A backend that can express a withholding more honestly should do that as well: dropping the extension the capability is backed by means the probe reports false on its own merits and the device is genuinely built without it. This is what covers the fields backed by a format query rather than an extension, and it is the belt to that braces.

Trait Implementations§

Source§

impl Clone for Withheld

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Withheld

Source§

impl Debug for Withheld

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Withheld

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for Withheld

Source§

impl From<Capability> for Withheld

Source§

fn from(capability: Capability) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Withheld

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Withheld

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.