From cc104f3f426a9abc3fd72710025a312f6f7deb45 Mon Sep 17 00:00:00 2001 From: jasmine Date: Sun, 8 Jun 2025 09:06:21 +0800 Subject: [PATCH] refactor --- src/core.rs | 8 ++++---- src/inbuilt.rs | 2 +- src/main.rs | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/core.rs b/src/core.rs index 6117104..6dcfbf3 100644 --- a/src/core.rs +++ b/src/core.rs @@ -20,15 +20,15 @@ pub fn parse_input(s: &str) -> Vec { shlex::split(s).unwrap() } -pub fn get_command(tokens: Vec<&str>) -> &str { - tokens[0] +pub fn get_command(tokens: &[String]) -> String { + tokens[0].clone() } -pub fn get_args(tokens: Vec<&str>) -> Vec<&str> { +pub fn get_args(tokens: &[String]) -> Vec { tokens[1..].to_vec() } -pub fn execute(cmd: &str, args: Vec<&str>) { +pub fn execute(cmd: &str, args: &[String]) { let status = Command::new(cmd) .args(args) .status(); diff --git a/src/inbuilt.rs b/src/inbuilt.rs index 57d7b4a..01846c9 100644 --- a/src/inbuilt.rs +++ b/src/inbuilt.rs @@ -1,6 +1,6 @@ use std::env; -pub fn cd(args: Vec<&str>) { +pub fn cd(args: &[String]) { let path = args[0].to_string(); assert!(env::set_current_dir(&path).is_ok()); } diff --git a/src/main.rs b/src/main.rs index 95d0ad1..5f85a00 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,15 +18,15 @@ fn main() { } // Convert our tokens to our command and arguments. - let cmd = core::get_command(tokens.clone()); - let args = core::get_args(tokens); + let cmd = core::get_command(&tokens); + let args = core::get_args(&tokens); // Execute inbuilt commands if supplied, otherwise execute command and argument. - match cmd { - "cd" => inbuilt::cd(args), + match cmd.as_str() { + "cd" => inbuilt::cd(&args), "help" => inbuilt::help(), "exit" => inbuilt::exit(), - _ => core::execute(cmd, args), + _ => core::execute(&cmd, &args), } } }