| 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. | 
|---|
| 13 | fn from_derive_input(input: &DeriveInput) -> Result<Self>; | 
|---|
| 14 | } | 
|---|
| 15 |  | 
|---|
| 16 | impl FromDeriveInput for () { | 
|---|
| 17 | fn from_derive_input(_: &DeriveInput) -> Result<Self> { | 
|---|
| 18 | Ok(()) | 
|---|
| 19 | } | 
|---|
| 20 | } | 
|---|
| 21 |  | 
|---|
| 22 | impl FromDeriveInput for DeriveInput { | 
|---|
| 23 | fn from_derive_input(input: &DeriveInput) -> Result<Self> { | 
|---|
| 24 | Ok(input.clone()) | 
|---|
| 25 | } | 
|---|
| 26 | } | 
|---|
| 27 |  | 
|---|