Generate all explicit and implicit impls based on one map
diff --git a/syntax/resolve.rs b/syntax/resolve.rs
new file mode 100644
index 0000000..5bb1535
--- /dev/null
+++ b/syntax/resolve.rs
@@ -0,0 +1,26 @@
+use crate::syntax::{NamedType, Pair, Types};
+use proc_macro2::Ident;
+
+impl<'a> Types<'a> {
+ pub fn resolve(&self, ident: &impl UnresolvedName) -> &Pair {
+ self.resolutions
+ .get(ident.ident())
+ .expect("Unable to resolve type")
+ }
+}
+
+pub trait UnresolvedName {
+ fn ident(&self) -> &Ident;
+}
+
+impl UnresolvedName for Ident {
+ fn ident(&self) -> &Ident {
+ self
+ }
+}
+
+impl UnresolvedName for NamedType {
+ fn ident(&self) -> &Ident {
+ &self.rust
+ }
+}