@@ -58,20 +58,17 @@ pub struct IoQueueTable {
58
58
// Associated Functions
59
59
//======================================================================================================================
60
60
61
- /// Associated functions for I/O queue descriptors tables.
62
61
impl IoQueueTable {
63
- /// Allocates a new entry in the target I/O queue descriptors table.
64
62
pub fn alloc < T : IoQueue > ( & mut self , queue : T ) ->QDesc {
65
- let index: usize =self . table . insert ( Box :: new ( queue) ) ;
66
- let qd: QDesc =expect_some ! (
63
+ let index =self . table . insert ( Box :: new ( queue) ) ;
64
+ let qd =expect_some ! (
67
65
self . qd_to_offset. insert_with_new_id( InternalId ( index) ) ,
68
66
"should be able to allocate an id"
69
67
) ;
70
68
trace ! ( "inserting queue, index {:?} qd {:?}" , index, qd) ;
71
69
qd
72
70
}
73
71
74
- /// Gets the type of the queue.
75
72
pub fn get_type ( & self , qd : & QDesc ) ->Result < QType , Fail > {
76
73
Ok ( self . get_queue_ref ( qd) ?. get_qtype ( ) )
77
74
}
@@ -88,10 +85,10 @@ impl IoQueueTable {
88
85
89
86
/// Releases the entry associated with an I/O queue descriptor.
90
87
pub fn free < T : IoQueue > ( & mut self , qd : & QDesc ) ->Result < T , Fail > {
91
- let internal_id: InternalId =match self . qd_to_offset . remove ( qd) {
88
+ let internal_id =match self . qd_to_offset . remove ( qd) {
92
89
Some ( id) => id,
93
90
None =>{
94
- let cause: String =format ! ( "invalid queue descriptor (qd={:?})" , qd) ;
91
+ let cause =format ! ( "invalid queue descriptor (qd={:?})" , qd) ;
95
92
error ! ( "free(): {}" , & cause) ;
96
93
return Err ( Fail :: new ( libc:: EBADF , & cause) ) ;
97
94
} ,
@@ -116,7 +113,7 @@ impl IoQueueTable {
116
113
}
117
114
}
118
115
119
- let cause: String =format ! ( "invalid queue descriptor (qd={:?})" , qd) ;
116
+ let cause =format ! ( "invalid queue descriptor (qd={:?})" , qd) ;
120
117
error ! ( "get(): {}" , & cause) ;
121
118
Err ( Fail :: new ( libc:: EBADF , & cause) )
122
119
}
@@ -128,7 +125,7 @@ impl IoQueueTable {
128
125
}
129
126
}
130
127
131
- let cause: String =format ! ( "invalid queue descriptor (qd={:?})" , qd) ;
128
+ let cause =format ! ( "invalid queue descriptor (qd={:?})" , qd) ;
132
129
error ! ( "get(): {}" , & cause) ;
133
130
Err ( Fail :: new ( libc:: EBADF , & cause) )
134
131
}
@@ -141,14 +138,14 @@ impl IoQueueTable {
141
138
/// Downcasts a [IoQueue] reference to a concrete queue type reference `&T`.
142
139
pub fn downcast_queue_ptr < T : IoQueue > ( boxed_queue_ptr : & Box < dyn IoQueue > ) ->Result < & T , Fail > {
143
140
// 1. Get reference to queue inside the box.
144
- let queue_ptr: & dyn IoQueue = boxed_queue_ptr. as_ref ( ) ;
141
+ let queue_ptr = boxed_queue_ptr. as_ref ( ) ;
145
142
// 2. Cast that reference to a void pointer for downcasting.
146
- let void_ptr: & dyn Any = queue_ptr. as_any_ref ( ) ;
143
+ let void_ptr = queue_ptr. as_any_ref ( ) ;
147
144
// 3. Downcast to concrete type T
148
145
match void_ptr. downcast_ref :: < T > ( ) {
149
146
Some ( ptr) =>Ok ( ptr) ,
150
147
None =>{
151
- let cause: & ' static str ="invalid queue type" ;
148
+ let cause ="invalid queue type" ;
152
149
error ! ( "downcast_queue_ptr(): {}" , cause) ;
153
150
Err ( Fail :: new ( libc:: EINVAL , cause) )
154
151
} ,
@@ -157,14 +154,14 @@ pub fn downcast_queue_ptr<T: IoQueue>(boxed_queue_ptr: &Box<dyn IoQueue>) -> Res
157
154
158
155
pub fn downcast_mut_ptr < T : IoQueue > ( boxed_queue_ptr : & mut Box < dyn IoQueue > ) ->Result < & mut T , Fail > {
159
156
// 1. Get reference to queue inside the box.
160
- let queue_ptr: & mut dyn IoQueue = boxed_queue_ptr. as_mut ( ) ;
157
+ let queue_ptr = boxed_queue_ptr. as_mut ( ) ;
161
158
// 2. Cast that reference to a void pointer for downcasting.
162
- let void_ptr: & mut dyn Any = queue_ptr. as_any_mut ( ) ;
159
+ let void_ptr = queue_ptr. as_any_mut ( ) ;
163
160
// 3. Downcast to concrete type T
164
161
match void_ptr. downcast_mut :: < T > ( ) {
165
162
Some ( ptr) =>Ok ( ptr) ,
166
163
None =>{
167
- let cause: & ' static str ="invalid queue type" ;
164
+ let cause ="invalid queue type" ;
168
165
error ! ( "downcast_mut_ptr(): {}" , cause) ;
169
166
Err ( Fail :: new ( libc:: EINVAL , cause) )
170
167
} ,
@@ -177,7 +174,7 @@ pub fn downcast_queue<T: IoQueue>(boxed_queue: Box<dyn IoQueue>) -> Result<T, Fa
177
174
match boxed_queue. as_any ( ) . downcast :: < T > ( ) {
178
175
Ok ( queue) =>Ok ( * queue) ,
179
176
Err ( _) =>{
180
- let cause: & ' static str ="invalid queue type" ;
177
+ let cause ="invalid queue type" ;
181
178
error ! ( "downcast_queue(): {}" , cause) ;
182
179
Err ( Fail :: new ( libc:: EINVAL , cause) )
183
180
} ,
@@ -238,7 +235,7 @@ mod tests {
238
235
use crate :: {
239
236
expect_ok,
240
237
runtime:: { IoQueue , IoQueueTable } ,
241
- QDesc , QType ,
238
+ QType ,
242
239
} ;
243
240
use :: std:: any:: Any ;
244
241
use :: test:: { black_box, Bencher } ;
@@ -264,12 +261,12 @@ mod tests {
264
261
265
262
#[ bench]
266
263
fn alloc_free_bench ( b : & mut Bencher ) {
267
- let mut ioqueue_table: IoQueueTable =IoQueueTable :: default ( ) ;
264
+ let mut ioqueue_table =IoQueueTable :: default ( ) ;
268
265
269
266
b. iter ( ||{
270
- let qd: QDesc = ioqueue_table. alloc :: < TestQueue > ( TestQueue { } ) ;
267
+ let qd = ioqueue_table. alloc :: < TestQueue > ( TestQueue { } ) ;
271
268
black_box ( qd) ;
272
- let queue: TestQueue =expect_ok ! ( ioqueue_table. free:: <TestQueue >( & qd) , "must be TestQueue" ) ;
269
+ let queue =expect_ok ! ( ioqueue_table. free:: <TestQueue >( & qd) , "must be TestQueue" ) ;
273
270
black_box ( queue) ;
274
271
} ) ;
275
272
}