X-Git-Url: https://i11git.iti.kit.edu/anon-gitweb/?p=Mitarbeiter%2FTim-Zeitz%2Fstud-rust-base.git;a=blobdiff_plain;f=src%2Fbin%2Fencode_vector.rs;h=a51a63ad04c9904576714055d351611d117eb8b7;hp=ebd1c73c9e31a837f2cafb1f96d244a8232450c4;hb=HEAD;hpb=e561b67a4f184a29efae1cf290e6f9ace3151248 diff --git a/src/bin/encode_vector.rs b/src/bin/encode_vector.rs index ebd1c73..a56eb82 100644 --- a/src/bin/encode_vector.rs +++ b/src/bin/encode_vector.rs @@ -1,44 +1,32 @@ -extern crate stud_rust_base; -use stud_rust_base::io::*; -use std::env; +use std::{env, error::Error}; +use stud_rust_base::{cli::CliErr, io::*}; -fn main() { - let mut args = env::args(); - args.next(); - - match &args.collect::>()[..] { - [data_type, output] => { +fn main() -> Result<(), Box> { + let mut args = env::args().skip(1); + match (args.next(), args.next()) { + (Some(data_type), Some(ref output)) => { match data_type.as_ref() { - "i8" => parse_input::().write_to(output).expect("Failed to write to output"), - "u8" => parse_input::().write_to(output).expect("Failed to write to output"), - "i16" => parse_input::().write_to(output).expect("Failed to write to output"), - "u16" => parse_input::().write_to(output).expect("Failed to write to output"), - "i32" => parse_input::().write_to(output).expect("Failed to write to output"), - "u32" => parse_input::().write_to(output).expect("Failed to write to output"), - "i64" => parse_input::().write_to(output).expect("Failed to write to output"), - "u64" => parse_input::().write_to(output).expect("Failed to write to output"), - "f32" => parse_input::().write_to(output).expect("Failed to write to output"), - "f64" => parse_input::().write_to(output).expect("Failed to write to output"), - "int8" => parse_input::().write_to(output).expect("Failed to write to output"), - "uint8" => parse_input::().write_to(output).expect("Failed to write to output"), - "int16" => parse_input::().write_to(output).expect("Failed to write to output"), - "uint16" => parse_input::().write_to(output).expect("Failed to write to output"), - "int32" => parse_input::().write_to(output).expect("Failed to write to output"), - "uint32" => parse_input::().write_to(output).expect("Failed to write to output"), - "int64" => parse_input::().write_to(output).expect("Failed to write to output"), - "uint64" => parse_input::().write_to(output).expect("Failed to write to output"), - "float32" => parse_input::().write_to(output).expect("Failed to write to output"), - "float64" => parse_input::().write_to(output).expect("Failed to write to output"), + "i8" | "int8" => parse_input::()?.write_to(output)?, + "u8" | "uint8" => parse_input::()?.write_to(output)?, + "i16" | "int16" => parse_input::()?.write_to(output)?, + "u16" | "uint16" => parse_input::()?.write_to(output)?, + "i32" | "int32" => parse_input::()?.write_to(output)?, + "u32" | "uint32" => parse_input::()?.write_to(output)?, + "i64" | "int64" => parse_input::()?.write_to(output)?, + "u64" | "uint64" => parse_input::()?.write_to(output)?, + "f32" | "float32" => parse_input::()?.write_to(output)?, + "f64" | "float64" => parse_input::()?.write_to(output)?, _ => { print_usage(); - panic!("Unknown data_type {}", data_type); + return Err(Box::new(CliErr("Invalid data type"))); } }; - }, + Ok(()) + } _ => { print_usage(); - panic!("Invalid input") - }, + Err(Box::new(CliErr("Invalid arguments"))) + } } } @@ -60,23 +48,21 @@ Reads textual data from the standard input and writes it in a binary format to o "); } -use std::{ - str::FromStr, - fmt::Debug, -}; +use std::str::FromStr; -fn parse_input() -> Vec where +fn parse_input() -> Result, Box> +where T: FromStr, - ::Err: Debug + ::Err: Error + 'static, { - use std::io::{BufRead, stdin}; + use std::io::{stdin, BufRead}; let mut values = Vec::new(); let stdin = stdin(); for line in stdin.lock().lines() { - values.push(line.unwrap().parse::().unwrap()) + values.push(line.unwrap().parse::()?) } - values + Ok(values) }