1 use darling::{FromDeriveInput, FromMeta};
2 
parse<T: FromDeriveInput>(src: &str) -> T3 fn parse<T: FromDeriveInput>(src: &str) -> T {
4     let ast = syn::parse_str(src).unwrap();
5     FromDeriveInput::from_derive_input(&ast).unwrap()
6 }
7 
8 #[derive(FromMeta, PartialEq, Eq, Debug)]
9 enum Volume {
10     Whisper,
11     Talk,
12     Shout,
13 }
14 
15 #[derive(FromDeriveInput)]
16 #[darling(attributes(speak))]
17 struct SpeakingOptions<T: Default, U> {
18     max_volume: U,
19     #[darling(skip)]
20     #[allow(dead_code)]
21     additional_data: T,
22 }
23 
24 #[derive(Default)]
25 struct Phoneme {
26     #[allow(dead_code)]
27     first: String,
28 }
29 
30 #[test]
skipped_field()31 fn skipped_field() {
32     let parsed: SpeakingOptions<Phoneme, Volume> = parse(
33         r#"
34         #[derive(Speak)]
35         #[speak(max_volume = "shout")]
36         enum HtmlElement {
37             Div(String)
38         }
39     "#,
40     );
41     assert_eq!(parsed.max_volume, Volume::Shout);
42 }
43