use crate::*;
pub(crate) fn try_send_macro(
attr: TokenStream,
item: TokenStream,
position: Position,
) -> TokenStream {
let data_expr: Option<Expr> = if attr.is_empty() {
None
} else {
let data: SendData = parse_macro_input!(attr as SendData);
Some(data.data)
};
inject(position, item, |context, stream| match data_expr {
Some(expr) => {
quote! {
let _ = #stream.try_send(#expr).await;
}
}
None => {
quote! {
let _ = #stream.try_send(#context.get_mut_response().build()).await;
}
}
})
}
pub(crate) fn send_macro(attr: TokenStream, item: TokenStream, position: Position) -> TokenStream {
let data_expr: Option<Expr> = if attr.is_empty() {
None
} else {
let data: SendData = parse_macro_input!(attr as SendData);
Some(data.data)
};
inject(position, item, |context, stream| match data_expr {
Some(expr) => {
quote! {
#stream.send(#expr).await;
}
}
None => {
quote! {
#stream.send(#context.get_mut_response().build()).await;
}
}
})
}