Use {f32,f64}::{from_bits,to_bits} instead of unsafe transmute.
These APIs were stabilized in Rust 1.20.0.
This commit is contained in:
parent
7fcd64b40b
commit
bbca6ea229
|
@ -25,7 +25,6 @@
|
|||
//
|
||||
|
||||
use std::fmt;
|
||||
use std::mem;
|
||||
|
||||
use endian::Endian;
|
||||
|
||||
|
@ -404,7 +403,7 @@ fn parse_float<'a, E>(data: &'a [u8], offset: usize, count: usize)
|
|||
-> Value<'a> where E: Endian {
|
||||
let mut val = Vec::with_capacity(count);
|
||||
for i in 0..count {
|
||||
val.push(unsafe { mem::transmute(E::loadu32(data, offset + i * 4)) });
|
||||
val.push(f32::from_bits(E::loadu32(data, offset + i * 4)));
|
||||
}
|
||||
Value::Float(val)
|
||||
}
|
||||
|
@ -414,7 +413,7 @@ fn parse_double<'a, E>(data: &'a [u8], offset: usize, count: usize)
|
|||
-> Value<'a> where E: Endian {
|
||||
let mut val = Vec::with_capacity(count);
|
||||
for i in 0..count {
|
||||
val.push(unsafe { mem::transmute(E::loadu64(data, offset + i * 8)) });
|
||||
val.push(f64::from_bits(E::loadu64(data, offset + i * 8)));
|
||||
}
|
||||
Value::Double(val)
|
||||
}
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
|
||||
use std::io;
|
||||
use std::io::{Seek, SeekFrom, Write};
|
||||
use std::mem;
|
||||
use std::slice;
|
||||
|
||||
use endian::{Endian, BigEndian, LittleEndian};
|
||||
|
@ -559,14 +558,14 @@ fn compose_value<E>(value: &Value)
|
|||
Value::Float(ref vec) => {
|
||||
let mut buf = Vec::new();
|
||||
for &v in vec {
|
||||
E::writeu32(&mut buf, unsafe { mem::transmute(v) })?;
|
||||
E::writeu32(&mut buf, v.to_bits())?;
|
||||
}
|
||||
Ok((11, vec.len(), buf))
|
||||
},
|
||||
Value::Double(ref vec) => {
|
||||
let mut buf = Vec::new();
|
||||
for &v in vec {
|
||||
E::writeu64(&mut buf, unsafe { mem::transmute(v) })?;
|
||||
E::writeu64(&mut buf, v.to_bits())?;
|
||||
}
|
||||
Ok((12, vec.len(), buf))
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue