1use crate::model::DeriveType;
2use proc_macro::TokenStream;
3use syn::{DeriveInput, parse_macro_input};
4
5pub(crate) mod model;
6mod render;
7
8#[proc_macro_derive(VertexExt, attributes(index))]
9pub fn vertex_ext(input: TokenStream) -> TokenStream {
10 let input = parse_macro_input!(input as DeriveInput);
11 match model::Model::try_from(DeriveType::Vertex(&input)) {
12 Ok(model) => model.into_vertex().into(),
13 Err(e) => e.into_compile_error().into(),
14 }
15}
16
17#[proc_macro_derive(EdgeExt, attributes(index))]
18pub fn edge_ext(input: TokenStream) -> TokenStream {
19 let input = parse_macro_input!(input as DeriveInput);
20 match model::Model::try_from(DeriveType::Edge(&input)) {
21 Ok(model) => model.into_edge().into(),
22 Err(e) => e.into_compile_error().into(),
23 }
24}