about summary refs log tree commit diff
path: root/tvix/nix-compat/src
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/nix-compat/src')
-rw-r--r--tvix/nix-compat/src/derivation/mod.rs2
-rw-r--r--tvix/nix-compat/src/derivation/write.rs16
2 files changed, 10 insertions, 8 deletions
diff --git a/tvix/nix-compat/src/derivation/mod.rs b/tvix/nix-compat/src/derivation/mod.rs
index 6a1eee4a81c3..6ee42bb3ed96 100644
--- a/tvix/nix-compat/src/derivation/mod.rs
+++ b/tvix/nix-compat/src/derivation/mod.rs
@@ -47,7 +47,7 @@ impl Derivation {
     ///
     /// The only errors returns are these when writing to the passed writer.
     pub fn serialize(&self, writer: &mut impl std::io::Write) -> Result<(), io::Error> {
-        io::copy(&mut io::Cursor::new(write::DERIVATION_PREFIX), writer)?;
+        writer.write_all(write::DERIVATION_PREFIX.as_bytes())?;
         write::write_char(writer, write::PAREN_OPEN)?;
 
         write::write_outputs(writer, &self.outputs)?;
diff --git a/tvix/nix-compat/src/derivation/write.rs b/tvix/nix-compat/src/derivation/write.rs
index 223ba9ff3fd9..5937f619b719 100644
--- a/tvix/nix-compat/src/derivation/write.rs
+++ b/tvix/nix-compat/src/derivation/write.rs
@@ -6,9 +6,12 @@
 use crate::derivation::escape::escape_bstr;
 use crate::derivation::output::Output;
 use bstr::BString;
-use std::collections::BTreeSet;
-use std::io::Cursor;
-use std::{collections::BTreeMap, io, io::Error, io::Write};
+use std::{
+    collections::{BTreeMap, BTreeSet},
+    io,
+    io::Error,
+    io::Write,
+};
 
 pub const DERIVATION_PREFIX: &str = "Derive";
 pub const PAREN_OPEN: char = '(';
@@ -22,8 +25,7 @@ pub const QUOTE: char = '"';
 pub(crate) fn write_char(writer: &mut impl Write, c: char) -> io::Result<()> {
     let mut buf = [0; 4];
     let b = c.encode_utf8(&mut buf).as_bytes();
-    io::copy(&mut Cursor::new(b), writer)?;
-    Ok(())
+    writer.write_all(b)
 }
 
 // Write a string `s` as a quoted field to the writer.
@@ -38,9 +40,9 @@ pub(crate) fn write_field<S: AsRef<[u8]>>(
     write_char(writer, QUOTE)?;
 
     if !escape {
-        io::copy(&mut Cursor::new(s), writer)?;
+        writer.write_all(s.as_ref())?;
     } else {
-        io::copy(&mut Cursor::new(escape_bstr(s.as_ref())), writer)?;
+        writer.write_all(&escape_bstr(s.as_ref()))?;
     }
 
     write_char(writer, QUOTE)?;