Handle pinned returned reference to improper ctype extern type
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index 73e2edf..12e4fe0 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -619,7 +619,11 @@
},
inner if types.is_considered_improper_ctype(inner) => {
let mutability = ty.mutability;
- quote!(&#mutability *#call.cast())
+ let deref_mut = quote!(&#mutability *#call.cast());
+ match ty.pinned {
+ false => deref_mut,
+ true => quote!(::std::pin::Pin::new_unchecked(#deref_mut)),
+ }
}
_ => call,
},