From 67cdcc2e12118becb823e20a40cc2687f2b8425a Mon Sep 17 00:00:00 2001 From: Adam Carpenter <53hornet@gmail.com> Date: Wed, 27 Mar 2019 15:32:37 -0400 Subject: Started Rust in Action MEAP. --- employees/Cargo.lock | 4 -- employees/Cargo.toml | 7 -- employees/src/main.rs | 181 -------------------------------------------------- 3 files changed, 192 deletions(-) delete mode 100644 employees/Cargo.lock delete mode 100644 employees/Cargo.toml delete mode 100644 employees/src/main.rs (limited to 'employees') diff --git a/employees/Cargo.lock b/employees/Cargo.lock deleted file mode 100644 index a6d8fc5..0000000 --- a/employees/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "employees" -version = "0.1.0" - diff --git a/employees/Cargo.toml b/employees/Cargo.toml deleted file mode 100644 index 016ef3b..0000000 --- a/employees/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "employees" -version = "0.1.0" -authors = ["Adam Carpenter "] -edition = "2018" - -[dependencies] diff --git a/employees/src/main.rs b/employees/src/main.rs deleted file mode 100644 index 0900bed..0000000 --- a/employees/src/main.rs +++ /dev/null @@ -1,181 +0,0 @@ -use std::collections::HashMap; -use std::process; -use std::io::{self, Write}; - -struct Employees { - departments: HashMap>, -} - -impl Employees { - - fn add_employee(&self, name: &Option<&String>, department: &Option<&String>) -> Result<(), &'static str> { - // parse name - let name = match name { - Some(s) => s, - None => { - return Err("Invalid or empty name."); - }, - }; - - // parse department - let dept = match department { - Some(s) => s, - None => { - return Err("Invalid or empty department."); - }, - }; - - // add name to department in departments - // and create department if it doesn't exist - employees.entry(dept.to_string()) - .or_insert(Vec::new()) - .push(name.to_string()); - - Ok(()) - } -} - -//fn list_employees() { -// let dept = match actions.get(1) { -// Some(s) => s, -// None => { -// "" -// } -// }; -// -// if dept == "" { -// // print employees in all depts -// for each in employees.keys() { -// println!("{}", each); -// match employees.get(&each.to_string()) { -// Some(v) => { -// for every in v { -// println!(" {}", every); -// } -// }, -// None => continue, -// }; -// } -// } -// else { -// // print employees in single dept -// match employees.get(&dept.to_string()) { -// Some(v) => { -// for every in v { -// println!("{}", every); -// }; -// }, -// None => { -// eprintln!("List: Invalid department."); -// continue; -// } -// }; -// } -//} -// -//fn list_employee(name) { -//} - - -//fn remove_employee(name) { -// let name = match actions.get(1) { -// Some(s) => s, -// None => { -// eprintln!("Remove: Invalid or empty name."); -// continue; -// }, -// }; -// -// let dept = match actions.get(2) { -// Some(s) => s, -// None => { -// eprintln!("Remove: Empty department."); -// continue; -// }, -// }; -// -// match employees.get_mut(&dept.to_string()) { -// Some(v) => { -// v.retain(|employee| employee != name); -// }, -// None => { -// eprintln!("Remove: Invalid department."); -// continue; -// } -// }; - -//} - -fn get_actions() -> Vec { - print!("> "); - io::stdout().flush().unwrap(); - - // grab input - let mut input = String::new(); - io::stdin().read_line(&mut input) - .expect("Failed to read input."); - - // finish on eof - if input == "" { - println!("Bye."); - process::exit(0); - } - - // collect all CLI arguments into vector of trimmed Strings - input.trim() - .split_whitespace() - .map(|action| action.to_string()) - .collect() -} - -fn main() { - println!("Welcome to employee manager."); - println!("Enter 'help' for help or Ctrl+D to exit."); - let mut departments: HashMap> = HashMap::new(); - - // operating loop - loop { - let actions = get_actions(); - - // act on actions - let command = match actions.get(0) { - Some(c) => c, - None => { - eprintln!("Empty command. Enter Ctrl+D to exit."); - continue; - } - }; - - match command.as_str() { - // add employee to department - "add" => { - match add_employee(&actions.get(1), &actions.get(2), &mut departments) { - Ok(()) => {dbg!(&departments);}, - Err(e) => eprintln!("{}", e), - }; - }, - - // list employees from one or all departments - "list" => { - }, - - // remove employee from department - "remove" => { - }, - - // print help - "help" => { - println!("Valid commands include:"); - println!("\tlist [department]"); - println!("\tadd "); - println!("\tremove "); - println!("Enter 'help' for help or Ctrl+D to exit."); - }, - - // all else fails - _ => eprintln!("Invalid command."), - } - - } - -} -- cgit v1.2.3