暫無描述
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.rs 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. use std::env;
  2. use std::process;
  3. use task2::Config;
  4. extern crate task2;
  5. fn main() {
  6. let args = env::args().collect();
  7. print_arguments(&args);
  8. //let conf = parse_arguments_simple(&args);
  9. //let res = parse_arguments(&args);
  10. let res = Config::new(&args);
  11. match res {
  12. Ok(conf) => {
  13. println!("{:?}", conf);
  14. println!("{:?}", task2::run(&conf));
  15. }
  16. Err(_) => process::exit(1),
  17. }
  18. }
  19. /*
  20. pub fn run(conf: &Config) -> i32 {
  21. let mut count = 0;
  22. for c in conf.line.chars() {
  23. if c == conf.search {
  24. count = count + 1;
  25. }
  26. }
  27. count
  28. }
  29. */
  30. /// Parses relevant arguments, returning the filled Config in Result
  31. ///
  32. ///
  33. /// This function will parse the relevant arguments from the
  34. /// given <Strings>.
  35. /// Returns Config or Error Message in Result
  36. #[allow(dead_code)]
  37. fn parse_arguments(args: &Vec<String>) -> Result<Config, String> {
  38. if args.len() < 3 {
  39. return Err("not ennugh parameters".to_string());
  40. }
  41. match args[1].chars().nth(0) {
  42. Some(value) => {
  43. Ok(Config {
  44. search: value,
  45. line: args[2].clone(),
  46. })
  47. }
  48. None => Err("char mismatch".to_string()),
  49. }
  50. }
  51. /// Parses relevant arguments, returning the filled Config
  52. ///
  53. ///
  54. /// This function will parse the relevant arguments from the
  55. /// given <Strings>.
  56. /// Returns Config
  57. #[allow(dead_code)]
  58. fn parse_arguments_simple(args: &Vec<String>) -> Config {
  59. Config {
  60. search: args[1].chars().nth(0).unwrap(),
  61. line: args[2].clone(),
  62. }
  63. }
  64. /// Prints elements of Vec
  65. ///
  66. ///
  67. /// This function will print all elements of Vec with "args found: <elem>" in
  68. /// each line
  69. ///
  70. /// Returns nothing
  71. fn print_arguments(args: &Vec<String>) {
  72. for s in args {
  73. println!("args found: {}", s);
  74. }
  75. }