From 17339231ce9a8e249b4e332a52deaf2dbb14d757 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Tue, 29 Mar 2016 10:17:33 +0200 Subject: [PATCH] Don't derive traits for structs that have an unsized member --- vulkano-shaders/src/structs.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/vulkano-shaders/src/structs.rs b/vulkano-shaders/src/structs.rs index e31b99d98..453b71818 100644 --- a/vulkano-shaders/src/structs.rs +++ b/vulkano-shaders/src/structs.rs @@ -93,9 +93,16 @@ fn write_struct(doc: &parse::Spirv, struct_id: u32, members: &[u32]) -> String { members_defs.push(format!("pub {name}: {ty}", name = member_name, ty = ty)); } - format!("#[repr(C)]\n#[derive(Copy, Clone, Debug, Default)]\n\ + // We can only derive common traits if there's no unsized member in the struct. + let derive = if current_rust_offset.is_some() { + "#[derive(Copy, Clone, Debug, Default)]\n" + } else { + "" + }; + + format!("#[repr(C)]\n{derive}\ pub struct {name} {{\n\t{members}\n}}\n", - name = name, members = members_defs.join(",\n\t")) + derive = derive, name = name, members = members_defs.join(",\n\t")) } /// Returns true if a `BuiltIn` decorator is applied on a struct member.