Skip to content

Commit ca5b73b

Browse files
Create cloudflare-derive-macros proc-macro crate
1 parent b4fa5ef commit ca5b73b

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
members = [
44
"cloudflare",
5+
"cloudflare-derive-macros",
56
"cloudflare-examples",
67
"cloudflare-e2e-test",
78
]

cloudflare-derive-macros/Cargo.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[package]
2+
name = "cloudflare-derive-macros"
3+
version = "0.1.0"
4+
edition = "2018"
5+
description = "Internal macros for the Cloudflare crate"
6+
license = "BSD-3-Clause"
7+
8+
[lib]
9+
proc-macro = true
10+
11+
[dependencies]
12+
syn = "1.0"
13+
quote = "1.0"

cloudflare-derive-macros/src/lib.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
extern crate proc_macro;
2+
3+
use proc_macro::TokenStream;
4+
use quote::quote;
5+
use syn::{parse_macro_input, DeriveInput};
6+
7+
#[proc_macro_derive(ApiResult)]
8+
pub fn api_result_derive(input: TokenStream) -> TokenStream {
9+
let ast = parse_macro_input!(input as DeriveInput);
10+
let name = &ast.ident;
11+
12+
let gen = quote! {
13+
impl crate::framework::response::ApiResult for #name {}
14+
};
15+
16+
gen.into()
17+
}
18+
19+
#[proc_macro_derive(VecApiResult)]
20+
pub fn vec_api_result_derive(input: TokenStream) -> TokenStream {
21+
let ast = parse_macro_input!(input as DeriveInput);
22+
let name = &ast.ident;
23+
24+
let gen = quote! {
25+
impl crate::framework::response::ApiResult for Vec<#name> {}
26+
};
27+
28+
gen.into()
29+
}

cloudflare/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,4 @@ serde_urlencoded = "0.7.1"
3333
thiserror = "1"
3434
url = "2.2"
3535
uuid = { version = "1.0", features = ["serde"] }
36+
cloudflare-derive-macros = { path = "../cloudflare-derive-macros" }

0 commit comments

Comments
 (0)