diff --git a/src/sdk/output/rust.rs b/src/sdk/output/rust.rs index 8241b19..091e418 100644 --- a/src/sdk/output/rust.rs +++ b/src/sdk/output/rust.rs @@ -251,7 +251,7 @@ pub fn generate_class_impl(class: &Class, sdk: &Sdk, w: &mut W) -> any field.ty.rust_type(sdk, w)?; writeln!( w, - " {{unsafe {{ &*self.as_ptr().offset({}) }} }}", + " {{unsafe {{ &*self.as_ptr().offset({}).cast() }} }}", field.offset )?; @@ -259,7 +259,7 @@ pub fn generate_class_impl(class: &Class, sdk: &Sdk, w: &mut W) -> any field.ty.rust_type(sdk, w)?; writeln!( w, - " {{unsafe {{ &mut *self.as_mut_ptr().offset({}) }} }}", + " {{unsafe {{ &mut *self.as_mut_ptr().offset({}).cast() }} }}", field.offset )?; @@ -268,7 +268,7 @@ pub fn generate_class_impl(class: &Class, sdk: &Sdk, w: &mut W) -> any write!(w, ") -> ()")?; writeln!( w, - " {{*unsafe {{ &mut *self.as_mut_ptr().offset({}) }} = {}; }}", + " {{*unsafe {{ &mut *self.as_mut_ptr().offset({}).cast() }} = {}; }}", field.offset, field.name )?; } @@ -326,7 +326,7 @@ fn generate_find_object(name: &str, w: &mut W) -> anyhow::Result<()> { None }} }} - }}).cast() + }}).map(|object| object.cast()) }} "# )?; @@ -368,7 +368,7 @@ pub fn generate_method( write!(w, "let func: UFunction = ")?; generate_find_object(&method.full_name, w)?; - writeln!(w, ";")?; + writeln!(w, ".expect(\"function '{}' not found\");", method.full_name)?; let params_name = format!("{}_{}_Params", class.rust_name(), method.name); writeln!(w, "let mut params = {params_name}::zeroed();")?;