From 4da906bf34e8831ecabc835a84c31d1766ffb2c5 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Thu, 12 Oct 2023 19:46:56 +0200 Subject: refactor(tvix/store/proto): merge two match statements into one Change-Id: I3daca008dff5527169f5916f4845234e8f3263cd Reviewed-on: https://cl.tvl.fyi/c/depot/+/9711 Autosubmit: flokli Reviewed-by: edef Tested-by: BuildkiteCI --- tvix/store/src/proto/mod.rs | 52 ++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/tvix/store/src/proto/mod.rs b/tvix/store/src/proto/mod.rs index 4bf4cfba1b..033fb79dbb 100644 --- a/tvix/store/src/proto/mod.rs +++ b/tvix/store/src/proto/mod.rs @@ -142,40 +142,34 @@ impl PathInfo { // Ensure there is a (root) node present, and it properly parses to a [StorePath]. let root_nix_path = match &self.node { - None => { - return Err(ValidatePathInfoError::NoNodePresent()); + None | Some(castorepb::Node { node: None }) => { + Err(ValidatePathInfoError::NoNodePresent())? } - Some(castorepb::Node { node }) => match node { - None => { - return Err(ValidatePathInfoError::NoNodePresent()); - } - Some(node) => { - match node { - // for a directory root node, ensure the digest has the appropriate size. - castorepb::node::Node::Directory(directory_node) => { - if TryInto::::try_into(directory_node.digest.clone()).is_err() - { - return Err(ValidatePathInfoError::InvalidNodeDigestLen( - directory_node.digest.len(), - )); - } + Some(castorepb::Node { node: Some(node) }) => { + match node { + // for a directory root node, ensure the digest has the appropriate size. + castorepb::node::Node::Directory(directory_node) => { + if TryInto::::try_into(directory_node.digest.clone()).is_err() { + return Err(ValidatePathInfoError::InvalidNodeDigestLen( + directory_node.digest.len(), + )); } - // for a file root node, ensure the digest has the appropriate size. - castorepb::node::Node::File(file_node) => { - // ensure the digest has the appropriate size. - if TryInto::::try_into(file_node.digest.clone()).is_err() { - return Err(ValidatePathInfoError::InvalidNodeDigestLen( - file_node.digest.len(), - )); - } + } + // for a file root node, ensure the digest has the appropriate size. + castorepb::node::Node::File(file_node) => { + // ensure the digest has the appropriate size. + if TryInto::::try_into(file_node.digest.clone()).is_err() { + return Err(ValidatePathInfoError::InvalidNodeDigestLen( + file_node.digest.len(), + )); } - // nothing to do specifically for symlinks - castorepb::node::Node::Symlink(_) => {} } - // parse the name of the node itself and return - parse_node_name_root(node.get_name(), ValidatePathInfoError::InvalidNodeName)? + // nothing to do specifically for symlinks + castorepb::node::Node::Symlink(_) => {} } - }, + // parse the name of the node itself and return + parse_node_name_root(node.get_name(), ValidatePathInfoError::InvalidNodeName)? + } }; // return the root nix path -- cgit 1.4.1