@@ -178,38 +178,38 @@ sockopt_impl!(GetOnly, OriginalDst, libc::SOL_IP, libc::SO_ORIGINAL_DST, libc::s
178178 *
179179 */
180180
181- trait Get < T > {
181+ unsafe trait Get < T > {
182182 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 ;
185185 unsafe fn unwrap ( self ) -> T ;
186186}
187187
188- trait Set < ' a , T > {
188+ unsafe trait Set < ' a , T > {
189189 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 ;
192192}
193193
194194struct GetStruct < T > {
195195 len : socklen_t ,
196196 val : T ,
197197}
198198
199- impl < T > Get < T > for GetStruct < T > {
199+ unsafe impl < T > Get < T > for GetStruct < T > {
200200 unsafe fn blank ( ) -> Self {
201201 GetStruct {
202202 len : mem:: size_of :: < T > ( ) as socklen_t ,
203203 val : mem:: zeroed ( ) ,
204204 }
205205 }
206206
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
209209 }
210210
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
213213 }
214214
215215 unsafe fn unwrap ( self ) -> T {
@@ -222,16 +222,16 @@ struct SetStruct<'a, T: 'static> {
222222 ptr : & ' a T ,
223223}
224224
225- impl < ' a , T > Set < ' a , T > for SetStruct < ' a , T > {
225+ unsafe impl < ' a , T > Set < ' a , T > for SetStruct < ' a , T > {
226226 fn new ( ptr : & ' a T ) -> SetStruct < ' a , T > {
227227 SetStruct { ptr : ptr }
228228 }
229229
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
232232 }
233233
234- unsafe fn ffi_len ( & self ) -> socklen_t {
234+ fn ffi_len ( & self ) -> socklen_t {
235235 mem:: size_of :: < T > ( ) as socklen_t
236236 }
237237}
@@ -241,20 +241,20 @@ struct GetBool {
241241 val : c_int ,
242242}
243243
244- impl Get < bool > for GetBool {
244+ unsafe impl Get < bool > for GetBool {
245245 unsafe fn blank ( ) -> Self {
246246 GetBool {
247247 len : mem:: size_of :: < c_int > ( ) as socklen_t ,
248248 val : mem:: zeroed ( ) ,
249249 }
250250 }
251251
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
254254 }
255255
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
258258 }
259259
260260 unsafe fn unwrap ( self ) -> bool {
@@ -267,16 +267,16 @@ struct SetBool {
267267 val : c_int ,
268268}
269269
270- impl < ' a > Set < ' a , bool > for SetBool {
270+ unsafe impl < ' a > Set < ' a , bool > for SetBool {
271271 fn new ( val : & ' a bool ) -> SetBool {
272272 SetBool { val : if * val { 1 } else { 0 } }
273273 }
274274
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
277277 }
278278
279- unsafe fn ffi_len ( & self ) -> socklen_t {
279+ fn ffi_len ( & self ) -> socklen_t {
280280 mem:: size_of :: < c_int > ( ) as socklen_t
281281 }
282282}
@@ -286,20 +286,20 @@ struct GetU8 {
286286 val : uint8_t ,
287287}
288288
289- impl Get < u8 > for GetU8 {
289+ unsafe impl Get < u8 > for GetU8 {
290290 unsafe fn blank ( ) -> Self {
291291 GetU8 {
292292 len : mem:: size_of :: < uint8_t > ( ) as socklen_t ,
293293 val : mem:: zeroed ( ) ,
294294 }
295295 }
296296
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
299299 }
300300
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
303303 }
304304
305305 unsafe fn unwrap ( self ) -> u8 {
@@ -312,16 +312,16 @@ struct SetU8 {
312312 val : uint8_t ,
313313}
314314
315- impl < ' a > Set < ' a , u8 > for SetU8 {
315+ unsafe impl < ' a > Set < ' a , u8 > for SetU8 {
316316 fn new ( val : & ' a u8 ) -> SetU8 {
317317 SetU8 { val : * val as uint8_t }
318318 }
319319
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
322322 }
323323
324- unsafe fn ffi_len ( & self ) -> socklen_t {
324+ fn ffi_len ( & self ) -> socklen_t {
325325 mem:: size_of :: < c_int > ( ) as socklen_t
326326 }
327327}
@@ -331,20 +331,20 @@ struct GetUsize {
331331 val : c_int ,
332332}
333333
334- impl Get < usize > for GetUsize {
334+ unsafe impl Get < usize > for GetUsize {
335335 unsafe fn blank ( ) -> Self {
336336 GetUsize {
337337 len : mem:: size_of :: < c_int > ( ) as socklen_t ,
338338 val : mem:: zeroed ( ) ,
339339 }
340340 }
341341
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
344344 }
345345
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
348348 }
349349
350350 unsafe fn unwrap ( self ) -> usize {
@@ -357,16 +357,16 @@ struct SetUsize {
357357 val : c_int ,
358358}
359359
360- impl < ' a > Set < ' a , usize > for SetUsize {
360+ unsafe impl < ' a > Set < ' a , usize > for SetUsize {
361361 fn new ( val : & ' a usize ) -> SetUsize {
362362 SetUsize { val : * val as c_int }
363363 }
364364
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
367367 }
368368
369- unsafe fn ffi_len ( & self ) -> socklen_t {
369+ fn ffi_len ( & self ) -> socklen_t {
370370 mem:: size_of :: < c_int > ( ) as socklen_t
371371 }
372372}
0 commit comments