for field in &fields.named {
//dbg!(field);
let fname = &field.ident.as_ref().unwrap();
+ let fname_string = fname.to_string();
+ let fname_lit = Literal::string( &fname_string );
let ty = &field.ty;
let fname_span = fname.span();
let skl = RefCell::new(None);
#fname: <#ty as ResolveGlobal>::resolve
(l.iter().map(|e| &e.#fname)),
));
+ inspects.push(quote!{
+ #fname_lit => &self.#fname,
+ });
continue;
}
method = attr.path.to_token_stream();
*skl.borrow_mut() = Some(get_path(tskl));
}
}
- let fname_string = fname.to_string();
- let fname_lit = Literal::string( &fname_string );
let skl = skl.into_inner()
.expect(&format!("SKL not specified! (field {})!", fname));
output.push(quote!{
#fname: rctx. #method ( #fname_lit, #skl )?,
});
- inspects.push(quote!{
- #fname_lit => &self.#fname,
- });
//eprintln!("{:?} method={:?} skl={:?}", field.ident, method, skl);
}
//dbg!(&output);
#( #output )*
})
}
-
- pub fn inspect_key(&self, field: &'_ str)
- -> Option<&dyn InspectableConfigValue> {
- Some(match field {
- #( #inspects )*
- _ => return None,
- })
- }
}
#[derive(Debug)]
pub fn from(l: &[#top_ident]) -> #global { #global {
#( #global_assignments )*
} }
+
+ pub fn inspect_key(&self, field: &'_ str)
+ -> Option<&dyn InspectableConfigValue> {
+ Some(match field {
+ #( #inspects )*
+ _ => return None,
+ })
+ }
}
};