#![feature(convert)] extern crate alchemy; use alchemy::U16_BYTES; use alchemy::{Converter, Endianess, PlatformEndian, Transmutable}; use alchemy::platform_to_network_order; fn use_converter() { let num: u16; let final_num: u16; let mut buffer: Vec; // Initialize the variables. num = 32832u16; buffer = Vec::new(); println!("Converting the value {} into and out of an array of bytes.", num); println!("Buffer starts as: {}", stringify_array(buffer.as_slice())); // Convert the short point number into an array of bytes. buffer = PlatformEndian::u16_to_bytes(num); println!("Buffer contains: {}", stringify_array(buffer.as_slice())); // Convert the array of bytes into a short number. final_num = PlatformEndian::bytes_to_u16(buffer.as_slice()); println!("The buffer converts back to: {}", final_num); } pub fn use_transmutable() { let num: u16; let final_num: u16; let endianess: Endianess; let mut buffer: Vec; // Initialize the variables. num = 32832u16; buffer = Vec::new(); endianess = Endianess::Platform; println!("Converting the value {} into and out of an array of bytes.", num); println!("Buffer starts as: {}", stringify_array(buffer.as_slice())); // Convert the short point number into an array of bytes. buffer = num.to_bytes(endianess); println!("Buffer contains: {}", stringify_array(buffer.as_slice())); // Convert the array of bytes into a short number. final_num = u16::from_bytes(buffer.as_slice(), endianess); 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 } pub fn main() { println!("Using converter:"); use_converter(); println!(""); println!("Using transmutable:"); use_transmutable(); println!(""); println!("This turns into a network value of: {}", platform_to_network_order(32832u16)); }