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: BindingModifier
pub const NONE: BindingModifier
All-modifiers-off; the default state of an unannotated binding (per-cycle).
Sourcepub const CONST: BindingModifier
pub const CONST: BindingModifier
Single-modifier convenience constants. Tests reach for these to express their intent compactly.
Sourcepub const SHARED: BindingModifier
pub const SHARED: BindingModifier
The shared modifier alone.
Sourcepub const VOLATILE: BindingModifier
pub const VOLATILE: BindingModifier
The volatile modifier alone.
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>(items: I) -> Result<BindingModifier, &'static str>where
I: IntoIterator<Item = WireModifier>,
pub fn try_from_iter<I>(items: I) -> Result<BindingModifier, &'static str>where
I: IntoIterator<Item = WireModifier>,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more