diff --git a/src/lib.rs b/src/lib.rs index 0eab861..8e541e9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -202,7 +202,6 @@ pub fn narrowable_alloy(args: TokenStream, input: TokenStream) -> TokenStream { unsafe impl Send for #struct_union_id {} unsafe impl Sync for #struct_union_id {} - unsafe impl FinalizerSafe for #struct_union_id {} unsafe impl ::std::gc::DropMethodFinalizerElidable for #struct_union_id {} impl ::std::ops::Drop for #struct_union_id { @@ -231,9 +230,9 @@ pub fn narrowable_alloy(args: TokenStream, input: TokenStream) -> TokenStream { let vtable = unsafe { ::std::mem::transmute:: <*const dyn #trait_id, (*const u8, *const u8)>(&obj) } .1; - let gc = ::std::gc::Gc::new(#struct_union_id { + let gc = unsafe { ::std::gc::Gc::new(::std::gc::FinalizeUnchecked::new(#struct_union_id { long: ::std::mem::ManuallyDrop::new(#struct_long_id { vtable, obj }) - }); + }))}; unsafe { ::std::gc::Gc::from_raw(&*gc.short as *const Self) }