mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-01 20:47:36 +00:00
24 lines
672 B
Rust
24 lines
672 B
Rust
extern crate proc_macro;
|
|
|
|
use proc_macro::*;
|
|
|
|
#[proc_macro_attribute]
|
|
pub fn proc_macro_attribute_that_generates_repr_packed(
|
|
_attr: TokenStream,
|
|
item: TokenStream,
|
|
) -> TokenStream {
|
|
let repr = vec![TokenTree::Ident(Ident::new("packed", Span::call_site()))].into_iter();
|
|
let attr = vec![
|
|
TokenTree::Ident(Ident::new("repr", Span::call_site())),
|
|
TokenTree::Group(Group::new(Delimiter::Parenthesis, repr.collect())),
|
|
]
|
|
.into_iter();
|
|
vec![
|
|
TokenTree::Punct(Punct::new('#', Spacing::Alone)),
|
|
TokenTree::Group(Group::new(Delimiter::Bracket, attr.collect())),
|
|
]
|
|
.into_iter()
|
|
.chain(item)
|
|
.collect()
|
|
}
|