about summary refs log tree commit diff
path: root/tvix/eval
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/eval')
-rw-r--r--tvix/eval/src/builtins/impure.rs9
-rw-r--r--tvix/eval/src/compiler/bindings.rs10
-rw-r--r--tvix/eval/src/value/string.rs7
3 files changed, 12 insertions, 14 deletions
diff --git a/tvix/eval/src/builtins/impure.rs b/tvix/eval/src/builtins/impure.rs
index f4bf400338ee..adf43e1a2ea9 100644
--- a/tvix/eval/src/builtins/impure.rs
+++ b/tvix/eval/src/builtins/impure.rs
@@ -1,6 +1,5 @@
 use builtin_macros::builtins;
 use genawaiter::rc::Gen;
-use smol_str::SmolStr;
 
 use std::{
     env,
@@ -12,7 +11,7 @@ use crate::{
     io::FileType,
     value::NixAttrs,
     vm::generators::{self, GenCo},
-    Value,
+    NixString, Value,
 };
 
 #[builtins]
@@ -38,14 +37,14 @@ mod impure_builtins {
         let dir = generators::request_read_dir(&co, path).await;
         let res = dir.into_iter().map(|(name, ftype)| {
             (
-                name,
+                NixString::from(name.as_str()),
                 Value::String(
-                    SmolStr::new(match ftype {
+                    match ftype {
                         FileType::Directory => "directory",
                         FileType::Regular => "regular",
                         FileType::Symlink => "symlink",
                         FileType::Unknown => "unknown",
-                    })
+                    }
                     .into(),
                 ),
             )
diff --git a/tvix/eval/src/compiler/bindings.rs b/tvix/eval/src/compiler/bindings.rs
index 9ce50d36db3e..2e703aadc876 100644
--- a/tvix/eval/src/compiler/bindings.rs
+++ b/tvix/eval/src/compiler/bindings.rs
@@ -361,7 +361,7 @@ impl Compiler<'_> {
 
                         // Place key on the stack when compiling attribute sets.
                         if kind.is_attrs() {
-                            self.emit_constant(Value::String(name.clone().into()), &attr);
+                            self.emit_constant(Value::String(name.as_str().into()), &attr);
                             let span = self.span_for(&attr);
                             self.scope_mut().declare_phantom(span, true);
                         }
@@ -569,7 +569,7 @@ impl Compiler<'_> {
 
                 KeySlot::Static { slot, name } => {
                     let span = self.scope()[slot].span;
-                    self.emit_constant(Value::String(name.into()), &span);
+                    self.emit_constant(Value::String(name.as_str().into()), &span);
                     self.scope_mut().mark_initialised(slot);
                 }
 
@@ -593,7 +593,7 @@ impl Compiler<'_> {
                         c.compile(s, namespace.clone());
                         c.emit_force(&namespace);
 
-                        c.emit_constant(Value::String(name.into()), &span);
+                        c.emit_constant(Value::String(name.as_str().into()), &span);
                         c.push_op(OpCode::OpAttrsSelect, &span);
                     })
                 }
@@ -681,7 +681,7 @@ impl Compiler<'_> {
         // (OpAttrs consumes all of these locals).
         self.scope_mut().end_scope();
 
-        self.emit_constant(Value::String(SmolStr::new_inline("body").into()), node);
+        self.emit_constant(Value::String("body".into()), node);
         self.push_op(OpCode::OpAttrsSelect, node);
     }
 
@@ -726,7 +726,7 @@ impl Compiler<'_> {
                 if self.has_dynamic_ancestor() {
                     self.thunk(slot, node, |c, _| {
                         c.context_mut().captures_with_stack = true;
-                        c.emit_constant(Value::String(SmolStr::new(ident).into()), node);
+                        c.emit_constant(Value::String(ident.into()), node);
                         c.push_op(OpCode::OpResolveWith, node);
                     });
                     return;
diff --git a/tvix/eval/src/value/string.rs b/tvix/eval/src/value/string.rs
index 8bb41a7825dd..7144ca360d15 100644
--- a/tvix/eval/src/value/string.rs
+++ b/tvix/eval/src/value/string.rs
@@ -4,7 +4,6 @@
 //! level, allowing us to shave off some memory overhead and only
 //! paying the cost when creating new strings.
 use rnix::ast;
-use smol_str::SmolStr;
 use std::ffi::OsStr;
 use std::hash::Hash;
 use std::ops::Deref;
@@ -50,9 +49,9 @@ impl From<String> for NixString {
     }
 }
 
-impl From<SmolStr> for NixString {
-    fn from(s: SmolStr) -> Self {
-        NixString(Box::from(s.as_str()))
+impl From<Box<str>> for NixString {
+    fn from(s: Box<str>) -> Self {
+        Self(s)
     }
 }