Simplify type resolution of named impl keys
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 406018a..9f9c039 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -1374,8 +1374,7 @@
 }
 
 fn write_rust_box_extern(out: &mut OutFile, key: NamedImplKey) {
-    let ident = key.rust;
-    let resolve = out.types.resolve(ident);
+    let resolve = out.types.resolve(&key);
     let inner = resolve.name.to_fully_qualified();
     let instance = resolve.name.to_symbol();
 
@@ -1441,8 +1440,7 @@
 }
 
 fn write_rust_box_impl(out: &mut OutFile, key: NamedImplKey) {
-    let ident = key.rust;
-    let resolve = out.types.resolve(ident);
+    let resolve = out.types.resolve(&key);
     let inner = resolve.name.to_fully_qualified();
     let instance = resolve.name.to_symbol();
 
@@ -1741,8 +1739,7 @@
 }
 
 fn write_weak_ptr(out: &mut OutFile, key: NamedImplKey) {
-    let ident = key.rust;
-    let resolve = out.types.resolve(ident);
+    let resolve = out.types.resolve(&key);
     let inner = resolve.name.to_fully_qualified();
     let instance = resolve.name.to_symbol();
 
diff --git a/syntax/resolve.rs b/syntax/resolve.rs
index 08fcf16..821f542 100644
--- a/syntax/resolve.rs
+++ b/syntax/resolve.rs
@@ -1,3 +1,4 @@
+use crate::syntax::instantiate::NamedImplKey;
 use crate::syntax::{Lifetimes, NamedType, Pair, Types};
 use proc_macro2::Ident;
 
@@ -31,3 +32,9 @@
         &self.rust
     }
 }
+
+impl<'a> UnresolvedName for NamedImplKey<'a> {
+    fn ident(&self) -> &Ident {
+        self.rust
+    }
+}