| 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 | |