| #[macro_use] |
| extern crate darling; |
| #[macro_use] |
| extern crate quote; |
| #[macro_use] |
| extern crate syn; |
| |
| use darling::FromDeriveInput; |
| |
| mod foo { |
| pub mod bar { |
| pub fn init() -> String { |
| String::from("hello") |
| } |
| } |
| } |
| |
| #[derive(FromDeriveInput)] |
| #[darling(attributes(speak))] |
| pub struct SpeakerOpts { |
| #[darling(default="foo::bar::init")] |
| first_word: String, |
| } |
| |
| #[test] |
| fn path_default() { |
| let speaker: SpeakerOpts = FromDeriveInput::from_derive_input(&parse_quote! { |
| struct Foo; |
| }).expect("Unit struct with no attrs should parse"); |
| |
| assert_eq!(speaker.first_word, "hello"); |
| } |