32 lines
630 B
Rust
32 lines
630 B
Rust
#[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");
|
|
} |