summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main.rs10
-rw-r--r--src/parser.rs2
2 files changed, 6 insertions, 6 deletions
diff --git a/src/main.rs b/src/main.rs
index 3ebcee5..2cc5ea9 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -6,11 +6,11 @@ use std::path::Path;
mod parser;
-fn substitute_vars(word: &String) -> String {
- match word.as_str() {
+fn substitute_vars(word: &str) -> String {
+ match word {
"~" => env::var("HOME").unwrap(),
- w if w.chars().nth(0).unwrap() == '~' => w.replace("~", env::var("HOME").unwrap().as_str()),
- w if w.chars().nth(0).unwrap() == '$' => {
+ w if w.starts_with('~') => w.replace('~', env::var("HOME").unwrap().as_str()),
+ w if w.starts_with('$') => {
match env::var(&w[1..]) {
Ok(val) => val,
Err(_) => String::from_str("").unwrap()
@@ -32,7 +32,7 @@ fn main() -> io::Result<()> {
let c = parser::command_line(&line).unwrap().1;
// for (c,l) in command {
- let mut parts = c.iter().map(substitute_vars);
+ let mut parts = c.iter().map(|s| substitute_vars(s));
let command = parts.next().unwrap();
match command.as_str() {
diff --git a/src/parser.rs b/src/parser.rs
index b43d16e..2e8c205 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -33,7 +33,7 @@ fn parameter(i: &str) -> IResult<&str, String> {
fn ligature(i: &str) -> IResult<&str, Option<char>> {
match tuple((space0, tag(";")))(i) {
Ok((rest, c)) =>
- Ok((rest, c.1.chars().nth(0))),
+ Ok((rest, c.1.chars().next())),
Err(e) => Err(e)
}
}