about summary refs log tree commit diff
path: root/tvix/eval/src/value/attrs
diff options
context:
space:
mode:
authorAspen Smith <root@gws.fyi>2024-02-01T17·28-0500
committeraspen <root@gws.fyi>2024-02-02T16·16+0000
commit5f0f4ea3746d6107839454bb5f4967d8757f5bb8 (patch)
treee618eca064cb7e263c58136f2c07b1dead63f49c /tvix/eval/src/value/attrs
parent4c5d9fa356bcb6dcd746129dde934412b44fdd35 (diff)
refactor(tvix/eval): Box Value::String r/7467
NixString is *quite* large - like 80 bytes - because of the extra
capacity value for BString and because of the context. We want to keep
Value small since we're passing it around a lot, so let's box the
NixString inside Value::String to save on some memory, and make cloning
ostensibly a little cheaper

Change-Id: I343c8b4e7f61dc3dcbbaba4382efb3b3e5bbabb2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10729
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Diffstat (limited to 'tvix/eval/src/value/attrs')
-rw-r--r--tvix/eval/src/value/attrs/tests.rs26
1 files changed, 10 insertions, 16 deletions
diff --git a/tvix/eval/src/value/attrs/tests.rs b/tvix/eval/src/value/attrs/tests.rs
index d269044b32ba..d7e2f113ebdf 100644
--- a/tvix/eval/src/value/attrs/tests.rs
+++ b/tvix/eval/src/value/attrs/tests.rs
@@ -14,11 +14,8 @@ fn test_empty_attrs() {
 
 #[test]
 fn test_simple_attrs() {
-    let attrs = NixAttrs::construct(
-        1,
-        vec![Value::String("key".into()), Value::String("value".into())],
-    )
-    .expect("simple attr construction should succeed");
+    let attrs = NixAttrs::construct(1, vec![Value::from("key"), Value::from("value")])
+        .expect("simple attr construction should succeed");
 
     assert!(
         matches!(attrs, NixAttrs(AttrsRep::Im(_))),
@@ -28,9 +25,9 @@ fn test_simple_attrs() {
 
 #[test]
 fn test_kv_attrs() {
-    let name_val = Value::String("name".into());
-    let value_val = Value::String("value".into());
-    let meaning_val = Value::String("meaning".into());
+    let name_val = Value::from("name");
+    let value_val = Value::from("value");
+    let meaning_val = Value::from("meaning");
     let forty_two_val = Value::Integer(42);
 
     let kv_attrs = NixAttrs::construct(
@@ -64,9 +61,9 @@ fn test_empty_attrs_iter() {
 
 #[test]
 fn test_kv_attrs_iter() {
-    let name_val = Value::String("name".into());
-    let value_val = Value::String("value".into());
-    let meaning_val = Value::String("meaning".into());
+    let name_val = Value::from("name");
+    let value_val = Value::from("value");
+    let meaning_val = Value::from("meaning");
     let forty_two_val = Value::Integer(42);
 
     let kv_attrs = NixAttrs::construct(
@@ -92,11 +89,8 @@ fn test_kv_attrs_iter() {
 
 #[test]
 fn test_map_attrs_iter() {
-    let attrs = NixAttrs::construct(
-        1,
-        vec![Value::String("key".into()), Value::String("value".into())],
-    )
-    .expect("simple attr construction should succeed");
+    let attrs = NixAttrs::construct(1, vec![Value::from("key"), Value::from("value")])
+        .expect("simple attr construction should succeed");
 
     let mut iter = attrs.iter().collect::<Vec<_>>().into_iter();
     let (k, v) = iter.next().unwrap();