@@ -15,11 +15,7 @@ impl Register {
1515 }
1616
1717 pub fn new_with_values(name: char, values: Vec<String>) -> Self {
18− if name == '_' {
19− Self::new(name)
20− } else {
21− Self { name, values }
22− }
18+ Self { name, values }
2319 }
2420
2521 pub const fn name(&self) -> char {
@@ -31,15 +27,11 @@ impl Register {
3127 }
3228
3329 pub fn write(&mut self, values: Vec<String>) {
34− if self.name != '_' {
35− self.values = values;
36− }
30+ self.values = values;
3731 }
3832
3933 pub fn push(&mut self, value: String) {
40− if self.name != '_' {
41− self.values.push(value);
42− }
34+ self.values.push(value);
4335 }
4436}
4537
@@ -54,19 +46,25 @@ impl Registers {
5446 self.inner.get(&name)
5547 }
5648
57− pub fn get_mut(&mut self, name: char) -> &mut Register {
58− self.inner
59− .entry(name)
60− .or_insert_with(|| Register::new(name))
49+ pub fn read(&self, name: char) -> Option<&[String]> {
50+ self.get(name).map(|reg| reg.read())
6151 }
6252
6353 pub fn write(&mut self, name: char, values: Vec<String>) {
64− self.inner
65− .insert(name, Register::new_with_values(name, values));
54+ if name != '_' {
55+ self.inner
56+ .insert(name, Register::new_with_values(name, values));
57+ }
6658 }
6759
68− pub fn read(&self, name: char) -> Option<&[String]> {
69− self.get(name).map(|reg| reg.read())
60+ pub fn push(&mut self, name: char, value: String) {
61+ if name != '_' {
62+ if let Some(r) = self.inner.get_mut(&name) {
63+ r.push(value);
64+ } else {
65+ self.write(name, vec![value]);
66+ }
67+ }
7068 }
7169
7270 pub fn first(&self, name: char) -> Option<&String> {