aranya_capi_codegen/syntax/
builds.rs1use proc_macro2::TokenStream;
2use quote::{ToTokens, quote};
3use syn::{
4 Error, Ident,
5 parse::{Parse, ParseStream, Result},
6};
7
8#[derive(Clone, Debug, Eq, PartialEq)]
12pub struct Builds {
13 pub ty: Ident,
15}
16
17impl Builds {
18 pub(super) fn parse(input: ParseStream<'_>) -> Result<Self> {
19 let ty = input.parse()?;
20 if !input.is_empty() {
21 return Err(Error::new(input.span(), "unexpected data"));
22 }
23 Ok(Self { ty })
24 }
25}
26
27impl Parse for Builds {
28 fn parse(input: ParseStream<'_>) -> Result<Self> {
29 Self::parse(input)
30 }
31}
32
33impl ToTokens for Builds {
34 fn to_tokens(&self, tokens: &mut TokenStream) {
35 let ty = &self.ty;
36 tokens.extend(quote! {
37 #[capi::builds(#ty)]
38 });
39 }
40}