1
- #![ feature( const_fn) ]
2
- #![ feature( alloc, allocator_api) ]
1
+ #![ feature( const_mut_refs, const_fn_fn_ptr_basics) ]
3
2
#![ no_std]
4
- #![ allow( stable_features) ]
5
3
6
4
#[ cfg( test) ]
7
5
#[ macro_use]
@@ -12,14 +10,7 @@ extern crate spin;
12
10
13
11
extern crate alloc;
14
12
15
- #[ rustversion:: before( 2020 -02 -02 ) ]
16
- use alloc:: alloc:: Alloc ;
17
- #[ rustversion:: since( 2020 -02 -02 ) ]
18
- use alloc:: alloc:: AllocRef ;
19
- use alloc:: alloc:: { AllocErr , Layout } ;
20
- #[ rustversion:: since( 2020 -04 -02 ) ]
21
- use alloc:: alloc:: { AllocInit , MemoryBlock } ;
22
- use core:: alloc:: GlobalAlloc ;
13
+ use core:: alloc:: { GlobalAlloc , Layout } ;
23
14
use core:: cmp:: { max, min} ;
24
15
use core:: fmt;
25
16
use core:: mem:: size_of;
@@ -109,7 +100,7 @@ impl Heap {
109
100
}
110
101
111
102
/// Alloc a range of memory from the heap satifying `layout` requirements
112
- pub fn alloc ( & mut self , layout : Layout ) -> Result < NonNull < u8 > , AllocErr > {
103
+ pub fn alloc ( & mut self , layout : Layout ) -> Result < NonNull < u8 > , ( ) > {
113
104
let size = max (
114
105
layout. size ( ) . next_power_of_two ( ) ,
115
106
max ( layout. align ( ) , size_of :: < usize > ( ) ) ,
@@ -127,7 +118,7 @@ impl Heap {
127
118
self . free_list [ j - 1 ] . push ( block) ;
128
119
}
129
120
} else {
130
- return Err ( AllocErr { } ) ;
121
+ return Err ( ( ) ) ;
131
122
}
132
123
}
133
124
@@ -142,11 +133,11 @@ impl Heap {
142
133
self . allocated += size;
143
134
return Ok ( result) ;
144
135
} else {
145
- return Err ( AllocErr { } ) ;
136
+ return Err ( ( ) ) ;
146
137
}
147
138
}
148
139
}
149
- Err ( AllocErr { } )
140
+ Err ( ( ) )
150
141
}
151
142
152
143
/// Dealloc a range of memory from the heap
@@ -217,53 +208,6 @@ impl fmt::Debug for Heap {
217
208
}
218
209
}
219
210
220
- #[ rustversion:: before( 2020 -02 -02 ) ]
221
- unsafe impl Alloc for Heap {
222
- unsafe fn alloc ( & mut self , layout : Layout ) -> Result < NonNull < u8 > , AllocErr > {
223
- self . alloc ( layout)
224
- }
225
-
226
- unsafe fn dealloc ( & mut self , ptr : NonNull < u8 > , layout : Layout ) {
227
- self . dealloc ( ptr, layout)
228
- }
229
- }
230
-
231
- #[ rustversion:: since( 2020 -02 -02 ) ]
232
- unsafe impl AllocRef for Heap {
233
- #[ rustversion:: before( 2020 -03 -03 ) ]
234
- unsafe fn alloc ( & mut self , layout : Layout ) -> Result < NonNull < u8 > , AllocErr > {
235
- self . alloc ( layout)
236
- }
237
-
238
- #[ rustversion:: all( since( 2020 -03 -03 ) , before( 2020 -03 -10 ) ) ]
239
- unsafe fn alloc ( & mut self , layout : Layout ) -> Result < ( NonNull < u8 > , usize ) , AllocErr > {
240
- self . alloc ( layout) . map ( |p| ( p, layout. size ( ) ) )
241
- }
242
-
243
- #[ rustversion:: all( since( 2020 -03 -10 ) , before( 2020 -04 -02 ) ) ]
244
- fn alloc ( & mut self , layout : Layout ) -> Result < ( NonNull < u8 > , usize ) , AllocErr > {
245
- self . alloc ( layout) . map ( |p| ( p, layout. size ( ) ) )
246
- }
247
-
248
- #[ rustversion:: since( 2020 -04 -02 ) ]
249
- fn alloc ( & mut self , layout : Layout , init : AllocInit ) -> Result < MemoryBlock , AllocErr > {
250
- self . alloc ( layout) . map ( |p| {
251
- let block = MemoryBlock {
252
- ptr : p,
253
- size : layout. size ( ) ,
254
- } ;
255
- unsafe {
256
- init. init ( block) ;
257
- }
258
- block
259
- } )
260
- }
261
-
262
- unsafe fn dealloc ( & mut self , ptr : NonNull < u8 > , layout : Layout ) {
263
- self . dealloc ( ptr, layout)
264
- }
265
- }
266
-
267
211
/// A locked version of `Heap`
268
212
///
269
213
/// # Usage
0 commit comments