1
+ #[ macro_export]
2
+ macro_rules! wrap_ok {
3
+ ( $e: expr) => {
4
+ :: core:: iter:: empty( ) . try_fold( $e, |_, __x: :: core:: convert:: Infallible | match __x { } )
5
+ } ;
6
+ }
7
+
1
8
macro_rules! ffi_body {
2
9
( nopanic $body: block) => {
3
10
{
4
- let result: Result <( ) , $crate:: error:: LibrashaderError > = try {
11
+ let result: Result <( ) , $crate:: error:: LibrashaderError > = ( || $crate :: ffi :: wrap_ok! ( {
5
12
$body
6
- } ;
13
+ } ) ) ( ) ;
7
14
8
15
let Err ( e) = result else {
9
16
return $crate:: error:: LibrashaderError :: ok( )
@@ -22,13 +29,13 @@ macro_rules! ffi_body {
22
29
} ;
23
30
( nopanic |$( $ref_capture: ident) ,* |; mut |$( $mut_capture: ident) ,* | $body: block) => {
24
31
{
25
- $( $crate:: error:: assert_non_null!( $ref_capture) ; ) *
32
+ $( $crate:: error:: assert_non_null!( @ EXPORT $ref_capture) ; ) *
26
33
$( let $ref_capture = unsafe { & * $ref_capture } ; ) *
27
- $( $crate:: error:: assert_non_null!( $mut_capture) ; ) *
34
+ $( $crate:: error:: assert_non_null!( @ EXPORT $mut_capture) ; ) *
28
35
$( let $mut_capture = unsafe { & mut * $mut_capture } ; ) *
29
- let result: Result <( ) , $crate:: error:: LibrashaderError > = try {
36
+ let result: Result <( ) , $crate:: error:: LibrashaderError > = ( || $crate :: ffi :: wrap_ok! ( {
30
37
$body
31
- } ;
38
+ } ) ) ( ) ;
32
39
33
40
let Err ( e) = result else {
34
41
return $crate:: error:: LibrashaderError :: ok( )
@@ -47,11 +54,11 @@ macro_rules! ffi_body {
47
54
} ;
48
55
( nopanic mut |$( $mut_capture: ident) ,* | $body: block) => {
49
56
{
50
- $( $crate:: error:: assert_non_null!( $mut_capture) ; ) *
57
+ $( $crate:: error:: assert_non_null!( @ EXPORT $mut_capture) ; ) *
51
58
$( let $mut_capture = unsafe { & mut * $mut_capture } ; ) *
52
- let result: Result <( ) , $crate:: error:: LibrashaderError > = try {
59
+ let result: Result <( ) , $crate:: error:: LibrashaderError > = ( || $crate :: ffi :: wrap_ok! ( {
53
60
$body
54
- } ;
61
+ } ) ) ( ) ;
55
62
56
63
let Err ( e) = result else {
57
64
return $crate:: error:: LibrashaderError :: ok( )
@@ -70,11 +77,11 @@ macro_rules! ffi_body {
70
77
} ;
71
78
( nopanic |$( $ref_capture: ident) ,* | $body: block) => {
72
79
{
73
- $( $crate:: error:: assert_non_null!( $ref_capture) ; ) *
80
+ $( $crate:: error:: assert_non_null!( @ EXPORT $ref_capture) ; ) *
74
81
$( let $ref_capture = unsafe { & * $ref_capture } ; ) *
75
- let result: Result <( ) , $crate:: error:: LibrashaderError > = try {
82
+ let result: Result <( ) , $crate:: error:: LibrashaderError > = ( || $crate :: ffi :: wrap_ok! ( {
76
83
$body
77
- } ;
84
+ } ) ) ( ) ;
78
85
79
86
let Err ( e) = result else {
80
87
return $crate:: error:: LibrashaderError :: ok( )
@@ -231,16 +238,16 @@ pub unsafe fn boxed_slice_from_raw_parts<T>(ptr: *mut T, len: usize) -> Box<[T]>
231
238
unsafe { Box :: from_raw ( std:: slice:: from_raw_parts_mut ( ptr, len) ) }
232
239
}
233
240
234
- #[ allow( unstable_name_collisions) ]
235
241
pub fn ptr_is_aligned < T : Sized > ( ptr : * const T ) -> bool {
236
- use sptr:: Strict ;
237
242
let align = std:: mem:: align_of :: < T > ( ) ;
238
243
if !align. is_power_of_two ( ) {
239
244
panic ! ( "is_aligned_to: align is not a power-of-two" ) ;
240
245
}
241
- ptr . addr ( ) & ( align - 1 ) == 0
246
+ sptr :: Strict :: addr ( ptr ) & ( align - 1 ) == 0
242
247
}
243
248
244
249
pub ( crate ) use extern_fn;
245
250
pub ( crate ) use ffi_body;
251
+ pub ( crate ) use wrap_ok;
252
+
246
253
use std:: mem:: ManuallyDrop ;
0 commit comments