diff options
author | Florian Klink <flokli@flokli.de> | 2023-07-31T21·12+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-07-31T21·50+0000 |
commit | 779fad29a12e3dd5206d5a5488ddce517390132e (patch) | |
tree | cc23cac419084da20bfcd933267c7f4eca660b29 /tvix/nix-compat/src | |
parent | 737a6ca01e3ee017834fd310cb942079b5d10446 (diff) |
refactor(tvix/nix-compat/derivation): use writer.write_all r/6454
This is more concise than a io::copy of a Cursor to bytes, and we have everything to be written in memory. Change-Id: I81f34666aa61aef4e16b33423ce4a69c3781efc3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8997 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: raitobezarius <tvl@lahfa.xyz> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/nix-compat/src')
-rw-r--r-- | tvix/nix-compat/src/derivation/mod.rs | 2 | ||||
-rw-r--r-- | tvix/nix-compat/src/derivation/write.rs | 16 |
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)?; |