From f9ca9a19c1b0b15d8ee15e1e64ed59fc5ad22ba5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jasper=20Gr=C3=A4flich?= <graeflich@cyberagentur.de>
Date: Wed, 11 Oct 2023 18:07:43 +0200
Subject: [PATCH] Appease clippy

---
 use-based-refs/interpreter/src/eval.rs      | 9 +++------
 use-based-refs/interpreter/src/lib.rs       | 2 +-
 use-based-refs/interpreter/src/typecheck.rs | 7 +++----
 3 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/use-based-refs/interpreter/src/eval.rs b/use-based-refs/interpreter/src/eval.rs
index 422ce90..f185d54 100644
--- a/use-based-refs/interpreter/src/eval.rs
+++ b/use-based-refs/interpreter/src/eval.rs
@@ -20,12 +20,9 @@ fn eval_ctx(ast: Node, ctx: &mut HashMap<String, Value>) -> Result<Value> {
             ctx.insert(ident.clone(), value);
             Value::Unit
         }
-        crate::Node::Ident(ident) => ctx
-            .get(&ident)
-            .ok_or(Error::Eval(format!(
-                "Ident error: `{ident}` is not defined"
-            )))?
-            .clone(),
+        crate::Node::Ident(ident) => *ctx.get(&ident).ok_or(Error::Eval(format!(
+            "Ident error: `{ident}` is not defined"
+        )))?,
     })
 }
 
diff --git a/use-based-refs/interpreter/src/lib.rs b/use-based-refs/interpreter/src/lib.rs
index 0c724e5..4b2b889 100644
--- a/use-based-refs/interpreter/src/lib.rs
+++ b/use-based-refs/interpreter/src/lib.rs
@@ -27,7 +27,7 @@ pub enum Node {
 }
 
 /// `λ_UR` value, result of a computation.
-#[derive(Debug, PartialEq, Eq, Clone)]
+#[derive(Debug, PartialEq, Eq, Clone, Copy)]
 pub enum Value {
     Num(u32),
     Unit,
diff --git a/use-based-refs/interpreter/src/typecheck.rs b/use-based-refs/interpreter/src/typecheck.rs
index 659533b..15c7186 100644
--- a/use-based-refs/interpreter/src/typecheck.rs
+++ b/use-based-refs/interpreter/src/typecheck.rs
@@ -13,7 +13,7 @@ fn typecheck_ctx(ast: &Node, ctx: &mut HashMap<String, Type>) -> Result<Type> {
             // because a Seq contains at least one element
             .try_fold(Type::Diverging, |_, n| typecheck_ctx(n, ctx))?,
         Node::Let { ident, expr, ty } => {
-            let expr_ty = typecheck_ctx(&expr, ctx)?;
+            let expr_ty = typecheck_ctx(expr, ctx)?;
             // If we have some type annotation, it may not be different from the type of `expr`
             if let Some(true) = ty.map(|ty| ty != expr_ty) {
                 return Err(Error::Type(format!(
@@ -27,10 +27,9 @@ fn typecheck_ctx(ast: &Node, ctx: &mut HashMap<String, Type>) -> Result<Type> {
                 ))))?;
             Type::Unit
         }
-        Node::Ident(ident) => ctx
+        Node::Ident(ident) => *ctx
             .get(ident)
-            .ok_or(Error::Name(format!("`{ident}` is not defined")))?
-            .clone(),
+            .ok_or(Error::Name(format!("`{ident}` is not defined")))?,
     })
 }
 
-- 
GitLab