File tree 1 file changed +5
-5
lines changed
1 file changed +5
-5
lines changed Original file line number Diff line number Diff line change @@ -84,18 +84,18 @@ pub unsafe fn align_alloced_mem_for_struct<T>(ptr: *const c_void) -> *const c_vo
84
84
/// resource instance on creation, and decrements when dropped.
85
85
pub struct ResourceCell < T > where T : NifResourceTypeProvider + Sync {
86
86
raw : * const c_void ,
87
- inner : * mut Box < T > ,
87
+ inner : * mut T ,
88
88
}
89
89
90
90
impl < T > ResourceCell < T > where T : NifResourceTypeProvider + Sync {
91
91
/// Makes a new ResourceCell from the given type. Note that the type must have
92
92
/// NifResourceTypeProvider implemented for it. See module documentation for info on this.
93
93
pub fn new ( data : T ) -> Self {
94
- let alloc_size = get_alloc_size_struct :: < Box < T > > ( ) ;
94
+ let alloc_size = get_alloc_size_struct :: < T > ( ) ;
95
95
let mem_raw = unsafe { :: wrapper:: resource:: alloc_resource ( T :: get_type ( ) . res , alloc_size) } ;
96
- let aligned_mem = unsafe { align_alloced_mem_for_struct :: < Box < T > > ( mem_raw) } as * mut Box < T > ;
96
+ let aligned_mem = unsafe { align_alloced_mem_for_struct :: < T > ( mem_raw) as * mut T } ;
97
97
98
- unsafe { ptr:: write ( aligned_mem, Box :: new ( data) ) } ;
98
+ unsafe { ptr:: write ( aligned_mem, data) } ;
99
99
100
100
ResourceCell {
101
101
raw : mem_raw,
@@ -109,7 +109,7 @@ impl<T> ResourceCell<T> where T: NifResourceTypeProvider + Sync {
109
109
None => return Err ( NifError :: BadArg ) ,
110
110
} ;
111
111
unsafe { :: wrapper:: resource:: keep_resource ( res_resource) ; }
112
- let casted_ptr = unsafe { align_alloced_mem_for_struct :: < Box < T > > ( res_resource) } as * mut Box < T > ;
112
+ let casted_ptr = unsafe { align_alloced_mem_for_struct :: < T > ( res_resource) as * mut T } ;
113
113
Ok ( ResourceCell {
114
114
raw : res_resource,
115
115
inner : casted_ptr,
You can’t perform that action at this time.
0 commit comments