From 43570bae11ff5c5fac5c644785a7c372367826ba Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Tue, 20 Feb 2024 12:12:37 +0700 Subject: refactor(tvix/store/proto): use bstr::ByteSlice String::from_utf8_lossy simply discards invalid bytes, while bstr replaces them with their replacement character. Change-Id: Ib78ff36ca5faacc1ad60bc4ddde7b62773848c07 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10981 Tested-by: BuildkiteCI Reviewed-by: Peter Kolloch Reviewed-by: flokli --- tvix/Cargo.lock | 1 + tvix/Cargo.nix | 4 ++++ tvix/store/Cargo.toml | 1 + tvix/store/src/proto/mod.rs | 3 ++- 4 files changed, 8 insertions(+), 1 deletion(-) (limited to 'tvix') diff --git a/tvix/Cargo.lock b/tvix/Cargo.lock index 9801ed4c0a17..26c0a47dddf9 100644 --- a/tvix/Cargo.lock +++ b/tvix/Cargo.lock @@ -3417,6 +3417,7 @@ dependencies = [ "async-recursion", "async-stream", "blake3", + "bstr", "bytes", "clap", "count-write", diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix index a39c8ef38d54..f12d95506191 100644 --- a/tvix/Cargo.nix +++ b/tvix/Cargo.nix @@ -10788,6 +10788,10 @@ rec { packageId = "blake3"; features = [ "rayon" "std" ]; } + { + name = "bstr"; + packageId = "bstr"; + } { name = "bytes"; packageId = "bytes"; diff --git a/tvix/store/Cargo.toml b/tvix/store/Cargo.toml index 9065465af622..bf0d3413609c 100644 --- a/tvix/store/Cargo.toml +++ b/tvix/store/Cargo.toml @@ -7,6 +7,7 @@ edition = "2021" anyhow = "1.0.68" async-stream = "0.3.5" blake3 = { version = "1.3.1", features = ["rayon", "std"] } +bstr = "1.6.0" bytes = "1.4.0" clap = { version = "4.0", features = ["derive", "env"] } count-write = "0.1.0" diff --git a/tvix/store/src/proto/mod.rs b/tvix/store/src/proto/mod.rs index 9c8e44cfb53a..76178a7a770b 100644 --- a/tvix/store/src/proto/mod.rs +++ b/tvix/store/src/proto/mod.rs @@ -1,4 +1,5 @@ #![allow(clippy::derive_partial_eq_without_eq, non_snake_case)] +use bstr::ByteSlice; use bytes::Bytes; use data_encoding::BASE64; // https://github.com/hyperium/tonic/issues/1056 @@ -41,7 +42,7 @@ pub enum ValidatePathInfoError { InvalidRootNode(ValidateNodeError), /// Invalid node name encountered. Root nodes in PathInfos have more strict name requirements - #[error("Failed to parse {} as StorePath: {1}", String::from_utf8_lossy(.0))] + #[error("Failed to parse {} as StorePath: {1}", .0.to_str_lossy())] InvalidNodeName(Vec, store_path::Error), /// The digest in narinfo.nar_sha256 has an invalid len. -- cgit 1.4.1