There is now a ByteSized trait that can be used to specify how many bytes it takes to represent a piece of data. This has been implemented for all of the primitive number types. With this information Transmutable was able to create a Vector2 wrapper that will need to be tested. If it works then soon after Vectors and other Sigils types can be turned into Transmutable types. This also has the changes for the original tests and example to use the new ByteSized information.
71 lines
1.6 KiB
Rust
71 lines
1.6 KiB
Rust
#![feature(convert)]
|
|
|
|
extern crate alchemy;
|
|
|
|
|
|
use alchemy::F32_BYTES;
|
|
use alchemy::{Converter, PlatformEndian};
|
|
|
|
|
|
|
|
pub fn main()
|
|
{
|
|
let num: f32;
|
|
let final_num: f32;
|
|
let mut buffer: [u8; F32_BYTES];
|
|
|
|
// Initialize the variables.
|
|
num = 6.291985f32;
|
|
buffer = [0u8; F32_BYTES];
|
|
|
|
println!("Converting the value {} into and out of an array of bytes.", num);
|
|
println!("Buffer starts as: {}", stringify_array(&buffer));
|
|
|
|
// Convert the floating point number into an array of bytes.
|
|
PlatformEndian::f32_to_bytes(&mut buffer, num);
|
|
|
|
println!("Buffer contains: {}", stringify_array(&buffer));
|
|
|
|
// Convert the array of bytes into a floating point number.
|
|
final_num = PlatformEndian::bytes_to_f32(&buffer);
|
|
println!("The buffer converts back to: {}", final_num);
|
|
}
|
|
|
|
/// This just help pretty up the printing of an array of bytes.
|
|
fn stringify_array(buffer: &[u8]) -> String
|
|
{
|
|
let mut result: String;
|
|
let mut count: usize;
|
|
|
|
// Create a new string that starts with just
|
|
// the array opening bracket.
|
|
result = String::new();
|
|
result.push_str("[");
|
|
|
|
// Loop through the buffer keeping track
|
|
// of our place in it.
|
|
count = 0usize;
|
|
for byte in buffer
|
|
{
|
|
// Handle priting the last value differently.
|
|
if count >= buffer.len() - 1
|
|
{
|
|
result.push_str(byte.to_string().as_str());
|
|
}
|
|
else
|
|
{
|
|
result.push_str(byte.to_string().as_str());
|
|
result.push_str(", ");
|
|
}
|
|
|
|
// Mark that we are going to look at
|
|
// the next byte in the array.
|
|
count += 1;
|
|
}
|
|
|
|
// Add the array closing bracket and
|
|
// return the new String.
|
|
result.push_str("]");
|
|
result
|
|
}
|