runtime_macro/lib.rs
1mod expand;
2mod generate;
3mod runtime;
4
5use proc_macro::TokenStream;
6use syn::parse_macro_input;
7
8/// Generates the runtime infrastructure based on the configuration.
9///
10/// # Example
11///
12/// ```ignore
13/// warp::runtime!({
14/// wasi_http: WasiHttp,
15/// wasi_otel: DefaultOtel,
16/// wasi_blobstore: MongoDb,
17/// });
18/// ```
19#[proc_macro]
20pub fn runtime(input: TokenStream) -> TokenStream {
21 let parsed = parse_macro_input!(input as runtime::Config);
22 let generated = match generate::Generated::try_from(parsed) {
23 Ok(generated) => generated,
24 Err(e) => return e.into_compile_error().into(),
25 };
26 expand::expand(generated).into()
27}