1 use stud_rust_base::{io::*, cli::CliErr};
2 use std::{env, error::Error};
4 fn main() -> Result<(), Box<dyn Error>> {
5 let mut args = env::args();
8 match &args.collect::<Vec<String>>()[..] {
9 [data_type, input] => {
10 match data_type.as_ref() {
11 "i8" => { print_values(Vec::<i8>::load_from(input)?); Ok(()) },
12 "u8" => { print_values(Vec::<u8>::load_from(input)?); Ok(()) },
13 "i16" => { print_values(Vec::<i16>::load_from(input)?); Ok(()) },
14 "u16" => { print_values(Vec::<u16>::load_from(input)?); Ok(()) },
15 "i32" => { print_values(Vec::<i32>::load_from(input)?); Ok(()) },
16 "u32" => { print_values(Vec::<u32>::load_from(input)?); Ok(()) },
17 "i64" => { print_values(Vec::<i64>::load_from(input)?); Ok(()) },
18 "u64" => { print_values(Vec::<u64>::load_from(input)?); Ok(()) },
19 "f32" => { print_values(Vec::<f32>::load_from(input)?); Ok(()) },
20 "f64" => { print_values(Vec::<f64>::load_from(input)?); Ok(()) },
21 "int8" => { print_values(Vec::<i8>::load_from(input)?); Ok(()) },
22 "uint8" => { print_values(Vec::<u8>::load_from(input)?); Ok(()) },
23 "int16" => { print_values(Vec::<i16>::load_from(input)?); Ok(()) },
24 "uint16" => { print_values(Vec::<u16>::load_from(input)?); Ok(()) },
25 "int32" => { print_values(Vec::<i32>::load_from(input)?); Ok(()) },
26 "uint32" => { print_values(Vec::<u32>::load_from(input)?); Ok(()) },
27 "int64" => { print_values(Vec::<i64>::load_from(input)?); Ok(()) },
28 "uint64" => { print_values(Vec::<u64>::load_from(input)?); Ok(()) },
29 "float32" => { print_values(Vec::<f32>::load_from(input)?); Ok(()) },
30 "float64" => { print_values(Vec::<f64>::load_from(input)?); Ok(()) },
33 Err(Box::new(CliErr("Invalid data type")))
39 Err(Box::new(CliErr("Invalid arguments")))
45 eprintln!("Usage: decode_vector data_type input_vector_file
47 Reads binary data from input_vector_file and writes the data to the standard output. data_type can be one of
62 use std::fmt::Display;
64 fn print_values<T>(values: Vec<T>) where