about summary refs log tree commit diff
path: root/tvix/eval/src/value/list.rs
diff options
context:
space:
mode:
authorGriffin Smith <root@gws.fyi>2022-10-23T17·50-0400
committertazjin <tazjin@tvl.su>2022-10-29T14·04+0000
commit3412ae495661e8073075bbb8c24ee0098ca2bede (patch)
tree9fa4775f7b059f855ae29e9aa895053bce8236a2 /tvix/eval/src/value/list.rs
parentd0a836b0e1ee1034144d1e5b71df6ab285c8450e (diff)
feat(tvix/eval): Implement builtins.sort r/5222
This is a bit tricky because the comparator can throw errors, so we
need to propagate them out if they exist and try to avoid sorting
forever by returning a reasonable ordering in this case (as
short-circuiting is not available).

Co-Authored-By: Vincent Ambo <tazjin@tvl.su>
Change-Id: Icae1d30f43ec1ae64b2ba51e73ee467605686792
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7072
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Diffstat (limited to 'tvix/eval/src/value/list.rs')
-rw-r--r--tvix/eval/src/value/list.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/tvix/eval/src/value/list.rs b/tvix/eval/src/value/list.rs
index 236a654ad88d..da8f70caacaf 100644
--- a/tvix/eval/src/value/list.rs
+++ b/tvix/eval/src/value/list.rs
@@ -1,5 +1,5 @@
 //! This module implements Nix lists.
-use std::ops::Deref;
+use std::ops::{Deref, DerefMut};
 
 use crate::errors::ErrorKind;
 use crate::vm::VM;
@@ -135,3 +135,9 @@ impl Deref for NixList {
         &self.0
     }
 }
+
+impl DerefMut for NixList {
+    fn deref_mut(&mut self) -> &mut Self::Target {
+        &mut self.0
+    }
+}