#![forbid(unsafe_code)]
#![warn(missing_docs)]
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, ItemStruct};
mod derive;
#[proc_macro_derive(Lerp, attributes(lerp))]
pub fn lerp_derive(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as ItemStruct);
derive::lerp_derive_internal(&input)
.unwrap_or_else(|err| {
let err = err.to_compile_error();
let name = input.ident;
quote! {
#err
#[automatically_derived]
impl<F: ::lerp::num_traits::Float> Lerp<F> for #name {
fn lerp(self, other: Self, t: F) -> Self {
unreachable!()
}
}
}
})
.into()
}