| 1 | use syn::Attribute; | 
| 2 |  | 
|---|
| 3 | use crate::Result; | 
|---|
| 4 |  | 
|---|
| 5 | /// Create an instance by parsing a list of attributes. | 
|---|
| 6 | /// | 
|---|
| 7 | /// This trait is useful when dealing with items such as traits on traits and impl blocks, | 
|---|
| 8 | /// for which `darling` does not provide dedicated traits. | 
|---|
| 9 | pub trait FromAttributes: Sized { | 
|---|
| 10 | /// Create an instance by parsing a list of attributes. | 
|---|
| 11 | /// | 
|---|
| 12 | /// By convention, `FromAttributes` implementations should merge item | 
|---|
| 13 | /// declarations across attributes, so that the following forms are | 
|---|
| 14 | /// equivalent: | 
|---|
| 15 | /// | 
|---|
| 16 | /// ```rust,ignore | 
|---|
| 17 | /// #[derive(Serialize)] | 
|---|
| 18 | /// #[serde(rename_all = "camel_case")] | 
|---|
| 19 | /// #[serde(borrow)] | 
|---|
| 20 | /// pub struct SplitExample {} | 
|---|
| 21 | /// | 
|---|
| 22 | /// #[derive(Serialize)] | 
|---|
| 23 | /// #[serde(borrow, rename_all = "camel_case")] | 
|---|
| 24 | /// pub struct JoinedExample {} | 
|---|
| 25 | /// ``` | 
|---|
| 26 | fn from_attributes(attrs: &[Attribute]) -> Result<Self>; | 
|---|
| 27 | } | 
|---|
| 28 |  | 
|---|