1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
use derive_deftly::{derive_deftly_adhoc, Deftly};
#[derive(Deftly)]
#[derive_deftly_adhoc]
#[deftly(something = "Box<char>")]
struct DataType {
foo: u8,
bar: Vec<String>,
}
derive_deftly_adhoc! {
DataType:
${for fields {
${paste $ttype _ $ftype}
}}
}
derive_deftly_adhoc! {
DataType:
struct ${paste $tname _ 42};
}
derive_deftly_adhoc! {
DataType:
struct ${paste $ttype ${tmeta(something) as ty}};
}
derive_deftly_adhoc! {
DataType:
// This expands to "r#struct Broken { }"
${paste tdefkwed} Broken { }
}
derive_deftly_adhoc! {
DataType:
// This attribute isn't actually provided, but that doesn't matter
// for this test since it fails before even looking for it.
${define VIA_DEFINE ${tmeta(t_frag) as ident}}
struct $<ViaDefine $VIA_DEFINE>;
}
derive_deftly_adhoc! {
DataType beta_deftly:
${kebab_case $tname}
}
derive_deftly_adhoc! {
DataType beta_deftly:
$<${kebab_case $tname}>
}
derive_deftly_adhoc! {
DataType beta_deftly:
fn unspanned_unimpl() {
$(
let _: $ftype = (42).$<into>();
)
}
fn spanned_unimpl() {
$(
let _: $ftype = (42).${paste_spanned $fname into}();
)
}
}
fn main() {}
|