Include type name in UniquePtr function table
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index e9a4495..67c34e5 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -475,6 +475,7 @@
 }
 
 fn expand_unique_ptr(namespace: &Namespace, ident: &Ident, types: &Types) -> TokenStream {
+    let name = ident.to_string();
     let prefix = format!("cxxbridge02$unique_ptr${}{}$", namespace, ident);
     let link_null = format!("{}null", prefix);
     let link_new = format!("{}new", prefix);
@@ -501,6 +502,7 @@
 
     quote! {
         unsafe impl ::cxx::private::UniquePtrTarget for #ident {
+            const __NAME: &'static str = #name;
             fn __null() -> *mut ::std::ffi::c_void {
                 extern "C" {
                     #[link_name = #link_null]
diff --git a/src/unique_ptr.rs b/src/unique_ptr.rs
index ca527d2..c8c5a67 100644
--- a/src/unique_ptr.rs
+++ b/src/unique_ptr.rs
@@ -122,6 +122,8 @@
 // codebase.
 pub unsafe trait UniquePtrTarget {
     #[doc(hidden)]
+    const __NAME: &'static str;
+    #[doc(hidden)]
     fn __null() -> *mut c_void;
     #[doc(hidden)]
     fn __new(value: Self) -> *mut c_void
@@ -157,6 +159,7 @@
 }
 
 unsafe impl UniquePtrTarget for CxxString {
+    const __NAME: &'static str = "CxxString";
     fn __null() -> *mut c_void {
         let mut repr = ptr::null_mut::<c_void>();
         unsafe { unique_ptr_std_string_null(&mut repr) }