diff options
Diffstat (limited to 'tvix')
-rw-r--r-- | tvix/eval/src/builtins/impure.rs | 9 | ||||
-rw-r--r-- | tvix/eval/src/compiler/bindings.rs | 10 | ||||
-rw-r--r-- | tvix/eval/src/value/string.rs | 7 |
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) } } |