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