chiark / gitweb /
macros wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 24 Jul 2021 01:03:15 +0000 (02:03 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 24 Jul 2021 01:03:15 +0000 (02:03 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
macros/macros.rs
src/config.rs

index 6576c279c55729623cec6ee65146678f210806d9..7ef226b12a7812fc69ff3573b057be5d19a39738 100644 (file)
@@ -4,6 +4,7 @@
 
 use syn::{parse_macro_input, Data, DataStruct, DeriveInput};
 use quote::{quote, quote_spanned};
+use proc_macro2::Literal;
 
 use itertools::Itertools;
 
@@ -18,13 +19,13 @@ pub fn resolve(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
 
   let target = &input.ident;
   let names = fields.named.iter().map(
-    |f| f.ident.as_ref().unwrap()
+    |f| Literal::string( &f.ident.as_ref().unwrap().to_string() )
   )
     .collect_vec();
 
   let output = quote! {
     impl #target {
-      const FIELDS: &[&str] = &[ #( #names ),* ];
+      const FIELDS: &'static [&'static str] = &[ #( #names ),* ];
     }
   };
   output.into()
index 7f90f4ba5bc0a0b30c5dc6c6d6f760e2b2976474..8fb526de2aeee873afb285ab8030fe04618d7c7c 100644 (file)
@@ -23,6 +23,7 @@ pub struct Opts {
 
 pub struct CidrString(pub String);
 
+#[derive(hippotat_macros::ResolveConfig)]
 pub struct InstanceConfig {
 /*
   // Exceptional settings
@@ -147,6 +148,8 @@ impl Aggregate {
     let loc = Arc::new(path.to_owned());
 
     for (sn, vars) in map {
+      dbg!( InstanceConfig::FIELDS );
+
       let sn = sn.parse().dcontext(&sn)?;
         self.sections.entry(sn)
         .or_default()