@@ -178,38 +178,38 @@ sockopt_impl!(GetOnly, OriginalDst, libc::SOL_IP, libc::SO_ORIGINAL_DST, libc::s
178
178
*
179
179
*/
180
180
181
- trait Get < T > {
181
+ unsafe trait Get < T > {
182
182
unsafe fn blank ( ) -> Self ;
183
- unsafe fn ffi_ptr ( & mut self ) -> * mut c_void ;
184
- unsafe fn ffi_len ( & mut self ) -> * mut socklen_t ;
183
+ fn ffi_ptr ( & mut self ) -> * mut c_void ;
184
+ fn ffi_len ( & mut self ) -> * mut socklen_t ;
185
185
unsafe fn unwrap ( self ) -> T ;
186
186
}
187
187
188
- trait Set < ' a , T > {
188
+ unsafe trait Set < ' a , T > {
189
189
fn new ( val : & ' a T ) -> Self ;
190
- unsafe fn ffi_ptr ( & self ) -> * const c_void ;
191
- unsafe fn ffi_len ( & self ) -> socklen_t ;
190
+ fn ffi_ptr ( & self ) -> * const c_void ;
191
+ fn ffi_len ( & self ) -> socklen_t ;
192
192
}
193
193
194
194
struct GetStruct < T > {
195
195
len : socklen_t ,
196
196
val : T ,
197
197
}
198
198
199
- impl < T > Get < T > for GetStruct < T > {
199
+ unsafe impl < T > Get < T > for GetStruct < T > {
200
200
unsafe fn blank ( ) -> Self {
201
201
GetStruct {
202
202
len : mem:: size_of :: < T > ( ) as socklen_t ,
203
203
val : mem:: zeroed ( ) ,
204
204
}
205
205
}
206
206
207
- unsafe fn ffi_ptr ( & mut self ) -> * mut c_void {
208
- mem :: transmute ( & mut self . val )
207
+ fn ffi_ptr ( & mut self ) -> * mut c_void {
208
+ & mut self . val as * mut T as * mut c_void
209
209
}
210
210
211
- unsafe fn ffi_len ( & mut self ) -> * mut socklen_t {
212
- mem :: transmute ( & mut self . len )
211
+ fn ffi_len ( & mut self ) -> * mut socklen_t {
212
+ & mut self . len
213
213
}
214
214
215
215
unsafe fn unwrap ( self ) -> T {
@@ -222,16 +222,16 @@ struct SetStruct<'a, T: 'static> {
222
222
ptr : & ' a T ,
223
223
}
224
224
225
- impl < ' a , T > Set < ' a , T > for SetStruct < ' a , T > {
225
+ unsafe impl < ' a , T > Set < ' a , T > for SetStruct < ' a , T > {
226
226
fn new ( ptr : & ' a T ) -> SetStruct < ' a , T > {
227
227
SetStruct { ptr : ptr }
228
228
}
229
229
230
- unsafe fn ffi_ptr ( & self ) -> * const c_void {
231
- mem :: transmute ( self . ptr )
230
+ fn ffi_ptr ( & self ) -> * const c_void {
231
+ self . ptr as * const T as * const c_void
232
232
}
233
233
234
- unsafe fn ffi_len ( & self ) -> socklen_t {
234
+ fn ffi_len ( & self ) -> socklen_t {
235
235
mem:: size_of :: < T > ( ) as socklen_t
236
236
}
237
237
}
@@ -241,20 +241,20 @@ struct GetBool {
241
241
val : c_int ,
242
242
}
243
243
244
- impl Get < bool > for GetBool {
244
+ unsafe impl Get < bool > for GetBool {
245
245
unsafe fn blank ( ) -> Self {
246
246
GetBool {
247
247
len : mem:: size_of :: < c_int > ( ) as socklen_t ,
248
248
val : mem:: zeroed ( ) ,
249
249
}
250
250
}
251
251
252
- unsafe fn ffi_ptr ( & mut self ) -> * mut c_void {
253
- mem :: transmute ( & mut self . val )
252
+ fn ffi_ptr ( & mut self ) -> * mut c_void {
253
+ & mut self . val as * mut c_int as * mut c_void
254
254
}
255
255
256
- unsafe fn ffi_len ( & mut self ) -> * mut socklen_t {
257
- mem :: transmute ( & mut self . len )
256
+ fn ffi_len ( & mut self ) -> * mut socklen_t {
257
+ & mut self . len
258
258
}
259
259
260
260
unsafe fn unwrap ( self ) -> bool {
@@ -267,16 +267,16 @@ struct SetBool {
267
267
val : c_int ,
268
268
}
269
269
270
- impl < ' a > Set < ' a , bool > for SetBool {
270
+ unsafe impl < ' a > Set < ' a , bool > for SetBool {
271
271
fn new ( val : & ' a bool ) -> SetBool {
272
272
SetBool { val : if * val { 1 } else { 0 } }
273
273
}
274
274
275
- unsafe fn ffi_ptr ( & self ) -> * const c_void {
276
- mem :: transmute ( & self . val )
275
+ fn ffi_ptr ( & self ) -> * const c_void {
276
+ & self . val as * const c_int as * const c_void
277
277
}
278
278
279
- unsafe fn ffi_len ( & self ) -> socklen_t {
279
+ fn ffi_len ( & self ) -> socklen_t {
280
280
mem:: size_of :: < c_int > ( ) as socklen_t
281
281
}
282
282
}
@@ -286,20 +286,20 @@ struct GetU8 {
286
286
val : uint8_t ,
287
287
}
288
288
289
- impl Get < u8 > for GetU8 {
289
+ unsafe impl Get < u8 > for GetU8 {
290
290
unsafe fn blank ( ) -> Self {
291
291
GetU8 {
292
292
len : mem:: size_of :: < uint8_t > ( ) as socklen_t ,
293
293
val : mem:: zeroed ( ) ,
294
294
}
295
295
}
296
296
297
- unsafe fn ffi_ptr ( & mut self ) -> * mut c_void {
298
- mem :: transmute ( & mut self . val )
297
+ fn ffi_ptr ( & mut self ) -> * mut c_void {
298
+ & mut self . val as * mut uint8_t as * mut c_void
299
299
}
300
300
301
- unsafe fn ffi_len ( & mut self ) -> * mut socklen_t {
302
- mem :: transmute ( & mut self . len )
301
+ fn ffi_len ( & mut self ) -> * mut socklen_t {
302
+ & mut self . len
303
303
}
304
304
305
305
unsafe fn unwrap ( self ) -> u8 {
@@ -312,16 +312,16 @@ struct SetU8 {
312
312
val : uint8_t ,
313
313
}
314
314
315
- impl < ' a > Set < ' a , u8 > for SetU8 {
315
+ unsafe impl < ' a > Set < ' a , u8 > for SetU8 {
316
316
fn new ( val : & ' a u8 ) -> SetU8 {
317
317
SetU8 { val : * val as uint8_t }
318
318
}
319
319
320
- unsafe fn ffi_ptr ( & self ) -> * const c_void {
321
- mem :: transmute ( & self . val )
320
+ fn ffi_ptr ( & self ) -> * const c_void {
321
+ & self . val as * const uint8_t as * const c_void
322
322
}
323
323
324
- unsafe fn ffi_len ( & self ) -> socklen_t {
324
+ fn ffi_len ( & self ) -> socklen_t {
325
325
mem:: size_of :: < c_int > ( ) as socklen_t
326
326
}
327
327
}
@@ -331,20 +331,20 @@ struct GetUsize {
331
331
val : c_int ,
332
332
}
333
333
334
- impl Get < usize > for GetUsize {
334
+ unsafe impl Get < usize > for GetUsize {
335
335
unsafe fn blank ( ) -> Self {
336
336
GetUsize {
337
337
len : mem:: size_of :: < c_int > ( ) as socklen_t ,
338
338
val : mem:: zeroed ( ) ,
339
339
}
340
340
}
341
341
342
- unsafe fn ffi_ptr ( & mut self ) -> * mut c_void {
343
- mem :: transmute ( & mut self . val )
342
+ fn ffi_ptr ( & mut self ) -> * mut c_void {
343
+ & mut self . val as * mut c_int as * mut c_void
344
344
}
345
345
346
- unsafe fn ffi_len ( & mut self ) -> * mut socklen_t {
347
- mem :: transmute ( & mut self . len )
346
+ fn ffi_len ( & mut self ) -> * mut socklen_t {
347
+ & mut self . len
348
348
}
349
349
350
350
unsafe fn unwrap ( self ) -> usize {
@@ -357,16 +357,16 @@ struct SetUsize {
357
357
val : c_int ,
358
358
}
359
359
360
- impl < ' a > Set < ' a , usize > for SetUsize {
360
+ unsafe impl < ' a > Set < ' a , usize > for SetUsize {
361
361
fn new ( val : & ' a usize ) -> SetUsize {
362
362
SetUsize { val : * val as c_int }
363
363
}
364
364
365
- unsafe fn ffi_ptr ( & self ) -> * const c_void {
366
- mem :: transmute ( & self . val )
365
+ fn ffi_ptr ( & self ) -> * const c_void {
366
+ & self . val as * const c_int as * const c_void
367
367
}
368
368
369
- unsafe fn ffi_len ( & self ) -> socklen_t {
369
+ fn ffi_len ( & self ) -> socklen_t {
370
370
mem:: size_of :: < c_int > ( ) as socklen_t
371
371
}
372
372
}
0 commit comments