• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use syn::DeriveInput;
2 
3 use crate::Result;
4 
5 /// Creates an instance by parsing an entire proc-macro `derive` input,
6 /// including the, identity, generics, and visibility of the type.
7 ///
8 /// This trait should either be derived or manually implemented by a type
9 /// in the proc macro crate which is directly using `darling`. It is unlikely
10 /// that these implementations will be reusable across crates.
11 pub trait FromDeriveInput: Sized {
12     /// Create an instance from `syn::DeriveInput`, or return an error.
from_derive_input(input: &DeriveInput) -> Result<Self>13     fn from_derive_input(input: &DeriveInput) -> Result<Self>;
14 }
15 
16 impl FromDeriveInput for () {
from_derive_input(_: &DeriveInput) -> Result<Self>17     fn from_derive_input(_: &DeriveInput) -> Result<Self> {
18         Ok(())
19     }
20 }
21 
22 impl FromDeriveInput for DeriveInput {
from_derive_input(input: &DeriveInput) -> Result<Self>23     fn from_derive_input(input: &DeriveInput) -> Result<Self> {
24         Ok(input.clone())
25     }
26 }
27