1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
extern crate proc_macro; use proc_macro::TokenStream; use proc_macro2::TokenStream as TokenStream2; use quote::quote; mod from_body; use from_body::expand_from_body; mod method; use method::{expand_method, Method}; mod request_body; use request_body::expand_request_body; mod resource; use resource::expand_resource; #[cfg(feature = "openapi")] mod openapi_type; fn krate() -> TokenStream2 { quote!(::gotham_restful) } #[proc_macro_derive(FromBody)] pub fn derive_from_body(tokens : TokenStream) -> TokenStream { expand_from_body(tokens) } #[cfg(feature = "openapi")] #[proc_macro_derive(OpenapiType)] pub fn derive_openapi_type(tokens : TokenStream) -> TokenStream { openapi_type::expand(tokens) } #[proc_macro_derive(RequestBody, attributes(supported_types))] pub fn derive_request_body(tokens : TokenStream) -> TokenStream { expand_request_body(tokens) } #[proc_macro_derive(Resource, attributes(rest_resource))] pub fn derive_resource(tokens : TokenStream) -> TokenStream { expand_resource(tokens) } #[proc_macro_attribute] pub fn rest_read_all(attr : TokenStream, item : TokenStream) -> TokenStream { expand_method(Method::ReadAll, attr, item) } #[proc_macro_attribute] pub fn rest_read(attr : TokenStream, item : TokenStream) -> TokenStream { expand_method(Method::Read, attr, item) } #[proc_macro_attribute] pub fn rest_search(attr : TokenStream, item : TokenStream) -> TokenStream { expand_method(Method::Search, attr, item) } #[proc_macro_attribute] pub fn rest_create(attr : TokenStream, item : TokenStream) -> TokenStream { expand_method(Method::Create, attr, item) } #[proc_macro_attribute] pub fn rest_update_all(attr : TokenStream, item : TokenStream) -> TokenStream { expand_method(Method::UpdateAll, attr, item) } #[proc_macro_attribute] pub fn rest_update(attr : TokenStream, item : TokenStream) -> TokenStream { expand_method(Method::Update, attr, item) } #[proc_macro_attribute] pub fn rest_delete_all(attr : TokenStream, item : TokenStream) -> TokenStream { expand_method(Method::DeleteAll, attr, item) } #[proc_macro_attribute] pub fn rest_delete(attr : TokenStream, item : TokenStream) -> TokenStream { expand_method(Method::Delete, attr, item) }