diff --git a/macros/src/codegen/resources.rs b/macros/src/codegen/resources.rs index 38ea52459e..8d7a3a86cc 100644 --- a/macros/src/codegen/resources.rs +++ b/macros/src/codegen/resources.rs @@ -56,7 +56,8 @@ pub fn codegen( #[allow(non_camel_case_types)] #(#cfgs)* pub struct #name<'a> { - priority: &'a Priority, + // PER: this is unsound + pub priority: &'a Priority, } #(#cfgs)* diff --git a/macros/src/codegen/resources_struct.rs b/macros/src/codegen/resources_struct.rs index 92d5b66633..69069449b4 100644 --- a/macros/src/codegen/resources_struct.rs +++ b/macros/src/codegen/resources_struct.rs @@ -165,6 +165,7 @@ pub fn codegen( let constructor = quote!( impl<#lt> #ident<#lt> { #[inline(always)] + // pub const unsafe fn new(#arg) -> Self { pub unsafe fn new(#arg) -> Self { #ident { #(#values,)* diff --git a/src/export.rs b/src/export.rs index 72d954ab14..29635d1509 100644 --- a/src/export.rs +++ b/src/export.rs @@ -78,7 +78,7 @@ impl Priority { /// /// Will overwrite the current Priority #[inline(always)] - pub unsafe fn new(value: u8) -> Self { + pub const unsafe fn new(value: u8) -> Self { Priority { inner: Cell::new(value), } @@ -98,6 +98,9 @@ impl Priority { } } +// PER: not sure if this is a problem +unsafe impl Sync for Priority {} + #[inline(always)] pub fn assert_send() where