Small demonstration of generic type & injection safe interpolation without variadic generics.
TL;DR
```rust pub use mydesiremacros::interpol;
pub trait TemplateString
fn accept(self) -> V::Output;
}
pub trait TemplateVisitor { type Output; fn new() -> Self; fn visit_str(&mut self, s: &'static str); fn finish(self) -> Self::Output; }
pub trait TemplateVisit
let affect = "frustrated"
let s = interpol!("I'm a {} man" as S);
// macro =>
let s = {
// need to generate a unique per-invocation type, but doesn't need to be variadic.
struct TS<'a, T0>((&'static str, &'static str), (&'a T0,));
impl<'a, T0, V: mydesire::TemplateVisitor + mydesire::TemplateVisit::accept(TS(("I'm a ", " man"), (&affect,)))
};
```