refactor(tvix/castore): add try_into_anonymous_node, rename to try_*

We have two places where we parse protos and want their names to be
empty:

 - Receiving a root node in a nar-bridge NAR request
 - Processing the CalculateNAR gRPC call

We don't have any place where we want to keep a name as bytes::Bytes
around, yet we used the `into_name_bytes_and_node` method.

It was also a bit wrongly named - it wasn't very clear the name was
not validated, and that the function may fail.

This moves the "splitting off the name as bytes::Bytes" part into a
private helper, only leaving the `try_into_name_and_node` and
`try_into_anonymous_node` methods around.

Change-Id: I2c7fd9871d49ec67450d7efa6a30d96197fb319c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12664
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: Marijan Petričević <marijan.petricevic94@gmail.com>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
This commit is contained in:
Florian Klink 2024-10-18 21:42:04 +02:00 committed by clbot
parent 9c22345019
commit 3fda90602d
10 changed files with 59 additions and 31 deletions

View file

@ -292,9 +292,9 @@ impl TvixStoreIO {
.zip(build_result.outputs_needles.iter())
.zip(drv.outputs.iter())
{
let (_, output_node) = output
let output_node = output
.clone()
.into_name_bytes_and_node()
.try_into_anonymous_node()
.expect("invalid node");
let output_needles: Vec<_> = output_needles
@ -365,7 +365,7 @@ impl TvixStoreIO {
build_result
.outputs
.into_iter()
.map(|e| e.into_name_and_node().expect("invalid node"))
.map(|e| e.try_into_name_and_node().expect("invalid node"))
.find(|(output_name, _output_node)| {
output_name.as_ref() == s.as_bytes()
})