rp1_macros/
error.rs

1use proc_macro2::TokenStream;
2
3pub enum Error {
4    SynError(syn::Error),
5    Darling(darling::Error),
6    MissingPrimaryKey,
7    AggregatePrimaryKeyNotSupported,
8    UnnamedFieldsNotSupported,
9}
10
11impl From<syn::Error> for Error {
12    fn from(e: syn::Error) -> Self {
13        Error::SynError(e)
14    }
15}
16
17impl From<darling::Error> for Error {
18    fn from(e: darling::Error) -> Self {
19        Error::Darling(e)
20    }
21}
22
23impl Error {
24    pub fn into_compile_error(self) -> TokenStream {
25        match self {
26            Error::SynError(e) => e.to_compile_error(),
27            Error::Darling(e) => e.write_errors(),
28            Error::MissingPrimaryKey => todo!(),
29            Error::AggregatePrimaryKeyNotSupported => todo!(),
30            Error::UnnamedFieldsNotSupported => todo!(),
31        }
32    }
33}
34
35pub type Result<T = TokenStream, E = Error> = std::result::Result<T, E>;