refactor(tvix/nix-compat): make NixHash an enum with fixed-len bytes

Less Vec<u8> passed around.

Change-Id: Ie153a6bfaa084d7490ffa38634efdf5f3c31a768
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9722
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
This commit is contained in:
Florian Klink 2023-10-14 17:48:16 +01:00 committed by clbot
parent 786b0324a9
commit 4ae0f428bd
8 changed files with 226 additions and 220 deletions

View file

@ -79,22 +79,20 @@ pub fn write_outputs(
let mut elements: Vec<&str> = vec![output_name, &output.path];
let (e2, e3) = match &output.hash_with_mode {
Some(hash) => match hash {
crate::nixhash::NixHashWithMode::Flat(h) => (
h.algo.to_string(),
data_encoding::HEXLOWER.encode(&h.digest),
),
crate::nixhash::NixHashWithMode::Recursive(h) => (
format!("r:{}", h.algo),
data_encoding::HEXLOWER.encode(&h.digest),
),
},
let (mode_and_algo, digest) = match &output.hash_with_mode {
Some(crate::nixhash::NixHashWithMode::Flat(h)) => (
h.algo().to_string(),
data_encoding::HEXLOWER.encode(h.digest_as_bytes()),
),
Some(crate::nixhash::NixHashWithMode::Recursive(h)) => (
format!("r:{}", h.algo()),
data_encoding::HEXLOWER.encode(h.digest_as_bytes()),
),
None => ("".to_string(), "".to_string()),
};
elements.push(&e2);
elements.push(&e3);
elements.push(&mode_and_algo);
elements.push(&digest);
write_array_elements(writer, &elements)?;