From 0907420600ba0f9270065dd83e81fb8f56dfda71 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Sat, 9 Dec 2023 12:48:24 +0200 Subject: refactor(nix-compat/store_path): from_absolute_path to StorePathRef The only non-test usage was only checking for the error case, and we can still convert this to an owned StorePath by calling to_owned() on StorePathRef. Change-Id: I9f67a759e580c9c429c96896bcdd295392aa5a2a Reviewed-on: https://cl.tvl.fyi/c/depot/+/10225 Reviewed-by: tazjin Autosubmit: flokli Tested-by: BuildkiteCI --- tvix/nix-compat/src/store_path/mod.rs | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'tvix/nix-compat/src/store_path/mod.rs') diff --git a/tvix/nix-compat/src/store_path/mod.rs b/tvix/nix-compat/src/store_path/mod.rs index 350e65d83fb0..9dfbb01630d7 100644 --- a/tvix/nix-compat/src/store_path/mod.rs +++ b/tvix/nix-compat/src/store_path/mod.rs @@ -97,16 +97,6 @@ impl StorePath { Ok(StorePathRef::from_bytes(s)?.to_owned()) } - /// Construct a [StorePath] from an absolute store path string. - /// This is equivalent to calling [StorePath::from_bytes], but stripping the - /// [STORE_DIR_WITH_SLASH] prefix before. - pub fn from_absolute_path(s: &[u8]) -> Result { - match s.strip_prefix(STORE_DIR_WITH_SLASH.as_bytes()) { - Some(s_stripped) => Self::from_bytes(s_stripped), - None => Err(Error::MissingStoreDir), - } - } - /// Decompose a string into a [StorePath] and a [PathBuf] containing the /// rest of the path, or an error. #[cfg(target_family = "unix")] @@ -187,6 +177,16 @@ impl<'a> StorePathRef<'a> { }) } + /// Construct a [StorePathRef] from an absolute store path string. + /// This is equivalent to calling [StorePathRef::from_bytes], but stripping + /// the [STORE_DIR_WITH_SLASH] prefix before. + pub fn from_absolute_path(s: &'a [u8]) -> Result { + match s.strip_prefix(STORE_DIR_WITH_SLASH.as_bytes()) { + Some(s_stripped) => Self::from_bytes(s_stripped), + None => Err(Error::MissingStoreDir), + } + } + /// Construct a [StorePathRef] by passing the `$digest-$name` string /// that comes after [STORE_DIR_WITH_SLASH]. pub fn from_bytes(s: &'a [u8]) -> Result { @@ -284,7 +284,7 @@ impl fmt::Display for StorePathRef<'_> { mod tests { use std::path::PathBuf; - use crate::store_path::DIGEST_SIZE; + use crate::store_path::{StorePathRef, DIGEST_SIZE}; use hex_literal::hex; use test_case::test_case; @@ -360,10 +360,11 @@ mod tests { let nixpath_expected = StorePath::from_bytes(example_nix_path_str.as_bytes()).expect("must parse"); - let nixpath_actual = StorePath::from_absolute_path( + let nixpath_actual = StorePathRef::from_absolute_path( "/nix/store/00bgd045z0d4icpbc2yyz4gx48ak44la-net-tools-1.60_p20170221182432".as_bytes(), ) - .expect("must parse"); + .expect("must parse") + .to_owned(); assert_eq!(nixpath_expected, nixpath_actual); @@ -377,7 +378,7 @@ mod tests { fn absolute_path_missing_prefix() { assert_eq!( Error::MissingStoreDir, - StorePath::from_absolute_path(b"foobar-123").expect_err("must fail") + StorePathRef::from_absolute_path(b"foobar-123").expect_err("must fail") ); } -- cgit 1.4.1