about summary refs log tree commit diff
path: root/tvix/eval/src/value
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/eval/src/value')
-rw-r--r--tvix/eval/src/value/attrs.rs26
-rw-r--r--tvix/eval/src/value/mod.rs12
2 files changed, 13 insertions, 25 deletions
diff --git a/tvix/eval/src/value/attrs.rs b/tvix/eval/src/value/attrs.rs
index cc4c02df3841..76a0fe3cf646 100644
--- a/tvix/eval/src/value/attrs.rs
+++ b/tvix/eval/src/value/attrs.rs
@@ -52,11 +52,11 @@ impl AttrsRep {
 
             AttrsRep::KV { name, value } => {
                 if key == "name" {
-                    return Some(&name);
+                    return Some(name);
                 }
 
                 if key == "value" {
-                    return Some(&value);
+                    return Some(value);
                 }
 
                 None
@@ -310,21 +310,16 @@ fn attempt_optimise_kv(slice: &mut [Value]) -> Option<NixAttrs> {
 // Set an attribute on an in-construction attribute set, while
 // checking against duplicate keys.
 fn set_attr(attrs: &mut NixAttrs, key: NixString, value: Value) -> EvalResult<()> {
-    let attrs = attrs.0.map_mut();
-    let entry = attrs.entry(key);
-
-    match entry {
-        std::collections::btree_map::Entry::Occupied(entry) => {
-            return Err(Error::DuplicateAttrsKey {
-                key: entry.key().as_str().to_string(),
-            })
-        }
+    match attrs.0.map_mut().entry(key) {
+        std::collections::btree_map::Entry::Occupied(entry) => Err(Error::DuplicateAttrsKey {
+            key: entry.key().as_str().to_string(),
+        }),
 
         std::collections::btree_map::Entry::Vacant(entry) => {
             entry.insert(value);
-            return Ok(());
+            Ok(())
         }
-    };
+    }
 }
 
 // Set a nested attribute inside of an attribute set, throwing a
@@ -345,16 +340,13 @@ fn set_nested_attr(
         return set_attr(attrs, key, value);
     }
 
-    let attrs = attrs.0.map_mut();
-    let entry = attrs.entry(key);
-
     // If there is not we go one step further down, in which case we
     // need to ensure that there either is no entry, or the existing
     // entry is a hashmap into which to insert the next value.
     //
     // If a value of a different type exists, the user specified a
     // duplicate key.
-    match entry {
+    match attrs.0.map_mut().entry(key) {
         // Vacant entry -> new attribute set is needed.
         std::collections::btree_map::Entry::Vacant(entry) => {
             let mut map = NixAttrs(AttrsRep::Map(BTreeMap::new()));
diff --git a/tvix/eval/src/value/mod.rs b/tvix/eval/src/value/mod.rs
index 2ba9ce9b50e6..46021a167b27 100644
--- a/tvix/eval/src/value/mod.rs
+++ b/tvix/eval/src/value/mod.rs
@@ -33,11 +33,7 @@ pub enum Value {
 
 impl Value {
     pub fn is_number(&self) -> bool {
-        match self {
-            Value::Integer(_) => true,
-            Value::Float(_) => true,
-            _ => false,
-        }
+        matches!(self, Value::Integer(_) | Value::Float(_))
     }
 
     pub fn type_of(&self) -> &'static str {
@@ -66,7 +62,7 @@ impl Value {
         }
     }
 
-    pub fn as_string(self) -> EvalResult<NixString> {
+    pub fn to_string(self) -> EvalResult<NixString> {
         match self {
             Value::String(s) => Ok(s),
             other => Err(Error::TypeError {
@@ -76,7 +72,7 @@ impl Value {
         }
     }
 
-    pub fn as_attrs(self) -> EvalResult<Rc<NixAttrs>> {
+    pub fn to_attrs(self) -> EvalResult<Rc<NixAttrs>> {
         match self {
             Value::Attrs(s) => Ok(s),
             other => Err(Error::TypeError {
@@ -86,7 +82,7 @@ impl Value {
         }
     }
 
-    pub fn as_list(self) -> EvalResult<NixList> {
+    pub fn to_list(self) -> EvalResult<NixList> {
         match self {
             Value::List(l) => Ok(l),
             other => Err(Error::TypeError {