diff --git a/src/sdk/output/rust.rs b/src/sdk/output/rust.rs index 0124559..ec40951 100644 --- a/src/sdk/output/rust.rs +++ b/src/sdk/output/rust.rs @@ -160,6 +160,9 @@ pub fn generate_class(class: &Class, _sdk: &Sdk, w: &mut W) -> anyhow: if !is_class { writeln!(w, "pub struct {name}(UnsafeCell<[u8; {size}]>);")?; + writeln!(w, "unsafe impl Send for {name} {{}}")?; + writeln!(w, "unsafe impl Sync for {name} {{}}")?; + write!( w, r#" @@ -187,6 +190,24 @@ impl {name} {{ } else { writeln!(w, "pub struct {name}(NonNull>);")?; + writeln!(w, "unsafe impl Send for {name} {{}}")?; + writeln!(w, "unsafe impl Sync for {name} {{}}")?; + + write!( + w, + r#" +impl AsUObject for {name} {{ + fn as_uobject(&self) -> UObject {{ + UObject(self.0) + }} + + fn from_uobject(obj: UObject) -> Self {{ + Self(obj.0) + }} +}} +"# + )?; + write!( w, r#"