From cba803db3c57b14fe80c73d28b3ed094b5cf321d Mon Sep 17 00:00:00 2001
From: Vincent Lafeychine <vincent.lafeychine@proton.me>
Date: Tue, 1 Nov 2022 12:44:40 +0100
Subject: [PATCH] chore(rust): Use of Deref/DerefMut for Environment

---
 kernel/src/environment.rs | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/kernel/src/environment.rs b/kernel/src/environment.rs
index b93dbdd1..11a0f625 100644
--- a/kernel/src/environment.rs
+++ b/kernel/src/environment.rs
@@ -1,10 +1,10 @@
-use crate::error::{KernelError, Result};
+use crate::error::{KernelError::*, Result};
 use crate::term::Term;
-use derive_more::From;
+use derive_more::{Deref, DerefMut, From};
 use std::collections::{hash_map, HashMap};
 
 /// Global Environment, contains the term and type of every definitions, denoted by their strings.
-#[derive(Clone, Default, Debug, Eq, PartialEq, From)]
+#[derive(Clone, Default, Debug, Deref, DerefMut, Eq, PartialEq, From)]
 pub struct Environment(HashMap<String, (Term, Term)>);
 
 impl Environment {
@@ -15,21 +15,21 @@ impl Environment {
 
     /// Creates a new environment binding s with (t1,t2)
     pub fn insert(&mut self, s: String, t1: Term, t2: Term) -> Result<&Self> {
-        if let hash_map::Entry::Vacant(e) = self.0.entry(s.clone()) {
+        if let hash_map::Entry::Vacant(e) = self.entry(s.clone()) {
             e.insert((t1, t2));
             Ok(self)
         } else {
-            Err(KernelError::AlreadyDefined(s))
+            Err(AlreadyDefined(s))
         }
     }
 
     /// Returns the term linked to a definition in a given environment.
     pub fn get_term(&self, s: &String) -> Option<Term> {
-        self.0.get(s).map(|(t, _)| t.clone())
+        self.get(s).map(|(t, _)| t.clone())
     }
 
     /// Returns the type linked to a definition in a given environment.
     pub fn get_type(&self, s: &String) -> Option<Term> {
-        self.0.get(s).map(|(_, t)| t.clone())
+        self.get(s).map(|(_, t)| t.clone())
     }
 }
-- 
GitLab