diff options
Diffstat (limited to 'tvix/eval/src/value/attrs.rs')
-rw-r--r-- | tvix/eval/src/value/attrs.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/tvix/eval/src/value/attrs.rs b/tvix/eval/src/value/attrs.rs index 318a8cfa8209..e9d5a239a3cf 100644 --- a/tvix/eval/src/value/attrs.rs +++ b/tvix/eval/src/value/attrs.rs @@ -274,6 +274,12 @@ impl NixAttrs { NixAttrs(AttrsRep::Map(map)) } + /// Construct an optimized "KV"-style attribute set given the value for the + /// `"name"` key, and the value for the `"value"` key + pub(crate) fn from_kv(name: Value, value: Value) -> Self { + NixAttrs(AttrsRep::KV { name, value }) + } + /// Compare `self` against `other` for equality using Nix equality semantics pub fn nix_eq(&self, other: &Self, vm: &mut VM) -> Result<bool, ErrorKind> { match (&self.0, &other.0) { @@ -376,10 +382,10 @@ fn attempt_optimise_kv(slice: &mut [Value]) -> Option<NixAttrs> { } }; - Some(NixAttrs(AttrsRep::KV { - name: slice[name_idx].clone(), - value: slice[value_idx].clone(), - })) + Some(NixAttrs::from_kv( + slice[name_idx].clone(), + slice[value_idx].clone(), + )) } /// Set an attribute on an in-construction attribute set, while |