From bbca6ea2290403e3f4d6a92a3ac46d823d833b25 Mon Sep 17 00:00:00 2001 From: KAMADA Ken'ichi Date: Fri, 20 Apr 2018 22:16:21 +0900 Subject: [PATCH] Use {f32,f64}::{from_bits,to_bits} instead of unsafe transmute. These APIs were stabilized in Rust 1.20.0. --- src/value.rs | 5 ++--- src/writer.rs | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/value.rs b/src/value.rs index 85ead07..fab5484 100644 --- a/src/value.rs +++ b/src/value.rs @@ -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) } diff --git a/src/writer.rs b/src/writer.rs index 4676e51..2da1ab1 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -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(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)) },