in uniffi_macros/src/export/attributes.rs [178:208]
fn parse_one(input: ParseStream<'_>) -> syn::Result<Self> {
let lookahead = input.lookahead1();
if lookahead.peek(kw::Debug) {
input.parse::<Option<kw::Debug>>()?;
Ok(Self {
traits: HashSet::from([UniffiTraitDiscriminants::Debug]),
})
} else if lookahead.peek(kw::Display) {
input.parse::<Option<kw::Display>>()?;
Ok(Self {
traits: HashSet::from([UniffiTraitDiscriminants::Display]),
})
} else if lookahead.peek(kw::Hash) {
input.parse::<Option<kw::Hash>>()?;
Ok(Self {
traits: HashSet::from([UniffiTraitDiscriminants::Hash]),
})
} else if lookahead.peek(kw::Eq) {
input.parse::<Option<kw::Eq>>()?;
Ok(Self {
traits: HashSet::from([UniffiTraitDiscriminants::Eq]),
})
} else {
Err(syn::Error::new(
input.span(),
format!(
"uniffi::export struct attributes must be builtin trait names; `{input}` is invalid"
),
))
}
}