We'd like a `Subst` trait, like in Unbound. It might look something like this: ```rust trait Subst<T> { fn subst(&mut self, name: &Name, replacement: &T); fn substs(&mut self, replacements: &[(Name, T)]); } ```