diff --git a/src/lib/shell/assignments.rs b/src/lib/shell/assignments.rs index dd3ed026d5b303e92ca1fba5594f04d0f6acbf25..57cf9ac18dc75898b41f86d7732af25fec67fd15 100644 --- a/src/lib/shell/assignments.rs +++ b/src/lib/shell/assignments.rs @@ -4,6 +4,7 @@ use super::{ use itoa; use lexers::assignments::{Operator, Primitive}; use parser::assignments::*; +use smallstring::SmallString; use smallvec::SmallVec; use shell::{ history::ShellHistory, @@ -290,9 +291,7 @@ impl VariableStore for Shell { Ok(VariableType::Str(ref index)) => { match self.variables.lookup_any_mut(key.name) { Some(VariableType::HashMap(map)) => { - if let Some(VariableType::Str(val)) = map.get_mut(&**index) { - *val = value; - } + map.entry(SmallString::from_str(index)).or_insert(VariableType::Str(value)); } Some(VariableType::Array(array)) => { let index_num = match index.parse::<usize>() {