bep_derive/lib.rs
1extern crate proc_macro;
2use proc_macro::TokenStream;
3use syn::{parse_macro_input, DeriveInput};
4
5mod basic;
6mod custom;
7mod embed;
8
9pub(crate) const EMBED: &str = "embed";
10
11/// References:
12/// <https://doc.rust-lang.org/book/ch19-06-macros.html#how-to-write-a-custom-derive-macro>
13/// <https://doc.rust-lang.org/reference/procedural-macros.html>
14#[proc_macro_derive(Embed, attributes(embed))]
15pub fn derive_embedding_trait(item: TokenStream) -> TokenStream {
16 let mut input = parse_macro_input!(item as DeriveInput);
17
18 embed::expand_derive_embedding(&mut input)
19 .unwrap_or_else(syn::Error::into_compile_error)
20 .into()
21}