pub enum Element {
Function(Function),
Type(Type),
Constant(Constant),
Guard(Guard),
Unsupported(Unsupported),
}Expand description
One member of the flat API.
Three modelled kinds — a function, a type, a constant — plus
Element::Guard for an anonymous const and Element::Unsupported for
anything the language cannot express. No marked
item passes through verbatim: a #[prebindgen] crate marks the items that
cross the boundary, and the supporting code around them is the consumer
crate’s job — the proc-macro enforces that already, refusing to mark a use,
mod, impl or macro_rules! at all.
Variants§
Function(Function)
Type(Type)
A type declaration: a struct, either enum shape, or an opaque handle.
Constant(Constant)
Guard(Guard)
An anonymous const — infrastructure re-emitted verbatim. Carries no API surface: nothing can name it, declare it, or cross it.
Unsupported(Unsupported)
An item the language cannot express — a parameter type outside the
grammar, a self receiver, a reference to a type the flat API never
declares, or a whole item kind it does not model such as a union.
Indexed under its name so nothing else can claim it, with the diagnosis
riding along. Parsing carries it; building a
Registry from a model holding one fails, reporting
every offender at once. See the module docs on where acceptance
is enforced.
Implementations§
Source§impl Element
impl Element
Sourcepub fn name(&self) -> Option<&Ident>
pub fn name(&self) -> Option<&Ident>
The item’s name, which is also its address: #[prebindgen] names live
in one flat namespace across every ingested source crate.
None when the item has no address — a Guard, or an item kind with
no identifier at all.
Sourcepub fn location(&self) -> &SourceLocation
pub fn location(&self) -> &SourceLocation
Where the item was captured, including the crate that marked it.
The same location every component of this item carries — they share one
Origin::location, because one captured record is one item.
Trait Implementations§
Auto Trait Implementations§
impl !Send for Element
impl !Sync for Element
impl Freeze for Element
impl RefUnwindSafe for Element
impl Unpin for Element
impl UnsafeUnpin for Element
impl UnwindSafe for Element
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<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