pub struct BindingModifier { /* private fields */ }Expand description
Set of wire modifiers carried by one binding declaration.
Stored as a bitset under the hood; consumers use
Self::has to test for individual modifiers and
Self::insert / Self::from_iter to build instances.
Validity: the combination const + volatile is
rejected at parse time as contradictory (Self::from_iter
is the validating builder). All other combinations are
representable.
Lives on every Statement::Binding — the modifier set
determines the binding’s lifecycle. Other statement kinds
(ExternPort, InputDecl, etc.) don’t carry modifiers
because their semantics are fixed by their statement form.
Implementations§
Source§impl BindingModifier
impl BindingModifier
Sourcepub const NONE: Self
pub const NONE: Self
All-modifiers-off; the default state of an unannotated binding (per-cycle).
Sourcepub const CONST: Self
pub const CONST: Self
Single-modifier convenience constants. Tests reach for these to express their intent compactly.
Sourcepub const fn has(&self, m: WireModifier) -> bool
pub const fn has(&self, m: WireModifier) -> bool
true iff m is set.
Sourcepub fn insert(&mut self, m: WireModifier)
pub fn insert(&mut self, m: WireModifier)
Add m to the set.
Sourcepub fn try_from_iter<I: IntoIterator<Item = WireModifier>>(
items: I,
) -> Result<Self, &'static str>
pub fn try_from_iter<I: IntoIterator<Item = WireModifier>>( items: I, ) -> Result<Self, &'static str>
Build a modifier set from an iterator of variants. The
parser uses this after collecting tokens. Rejects the
contradictory const + volatile combo with a clear
error.
Sourcepub fn iter(&self) -> impl Iterator<Item = WireModifier> + '_
pub fn iter(&self) -> impl Iterator<Item = WireModifier> + '_
Iterate the modifiers in the set, in fixed declaration
order (Const, Shared, Volatile). Used for
re-emission and stable hash output.
Sourcepub const fn is_const(&self) -> bool
pub const fn is_const(&self) -> bool
Direct field-style accessors retained for sites that
pattern-match on individual flags. Mechanically derive
from has(...) so adding a new modifier is one variant
- one bit assignment + (optionally) one accessor.
true iff shared is set.
Sourcepub const fn is_volatile(&self) -> bool
pub const fn is_volatile(&self) -> bool
true iff volatile is set.
Trait Implementations§
Source§impl Clone for BindingModifier
impl Clone for BindingModifier
Source§fn clone(&self) -> BindingModifier
fn clone(&self) -> BindingModifier
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for BindingModifier
Source§impl Debug for BindingModifier
impl Debug for BindingModifier
Source§impl Default for BindingModifier
impl Default for BindingModifier
Source§fn default() -> BindingModifier
fn default() -> BindingModifier
impl Eq for BindingModifier
Source§impl PartialEq for BindingModifier
impl PartialEq for BindingModifier
impl StructuralPartialEq for BindingModifier
Auto Trait Implementations§
impl Freeze for BindingModifier
impl RefUnwindSafe for BindingModifier
impl Send for BindingModifier
impl Sync for BindingModifier
impl Unpin for BindingModifier
impl UnsafeUnpin for BindingModifier
impl UnwindSafe for BindingModifier
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.