diff options
author | Florian Klink <flokli@flokli.de> | 2024-03-03T12·40+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2024-03-03T15·18+0000 |
commit | 8383e9e02e1f762013a652e9a842493a1be5bb60 (patch) | |
tree | fbc79f6f10f4b3abf17722701b9a7bcc8d7c3c82 | |
parent | 9a7246ea1dac200648976be4558e29c3e9aa7eb7 (diff) |
feat(tvix/castore/digests): impl From digest::Output<_> for B3Digest r/7640
This allows calling .into() to get a B3Digest. Change-Id: I6e63b496413cd00d84acfcd15c7de0f64c79721f Reviewed-on: https://cl.tvl.fyi/c/depot/+/11086 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: raitobezarius <tvl@lahfa.xyz> Tested-by: BuildkiteCI
-rw-r--r-- | tvix/Cargo.lock | 3 | ||||
-rw-r--r-- | tvix/Cargo.nix | 22 | ||||
-rw-r--r-- | tvix/castore/Cargo.toml | 7 | ||||
-rw-r--r-- | tvix/castore/src/digests.rs | 7 |
4 files changed, 33 insertions, 6 deletions
diff --git a/tvix/Cargo.lock b/tvix/Cargo.lock index 7995402ead4a..bcaa8190e5be 100644 --- a/tvix/Cargo.lock +++ b/tvix/Cargo.lock @@ -280,6 +280,7 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", + "digest", "rayon", ] @@ -649,6 +650,7 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", + "subtle", ] [[package]] @@ -3304,6 +3306,7 @@ dependencies = [ "bstr", "bytes", "data-encoding", + "digest", "fuse-backend-rs", "futures", "hex-literal", diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix index 9ee11cbd94f7..2987a76751b4 100644 --- a/tvix/Cargo.nix +++ b/tvix/Cargo.nix @@ -923,6 +923,12 @@ rec { packageId = "constant_time_eq"; } { + name = "digest"; + packageId = "digest"; + optional = true; + features = [ "mac" ]; + } + { name = "rayon"; packageId = "rayon"; optional = true; @@ -943,7 +949,7 @@ rec { "traits-preview" = [ "digest" ]; "zeroize" = [ "dep:zeroize" "arrayvec/zeroize" ]; }; - resolvedDefaultFeatures = [ "default" "rayon" "std" ]; + resolvedDefaultFeatures = [ "default" "digest" "rayon" "std" "traits-preview" ]; }; "block-buffer" = rec { crateName = "block-buffer"; @@ -1917,6 +1923,12 @@ rec { name = "crypto-common"; packageId = "crypto-common"; } + { + name = "subtle"; + packageId = "subtle"; + optional = true; + usesDefaultFeatures = false; + } ]; features = { "blobby" = [ "dep:blobby" ]; @@ -1931,7 +1943,7 @@ rec { "std" = [ "alloc" "crypto-common/std" ]; "subtle" = [ "dep:subtle" ]; }; - resolvedDefaultFeatures = [ "alloc" "block-buffer" "core-api" "default" "std" ]; + resolvedDefaultFeatures = [ "alloc" "block-buffer" "core-api" "default" "mac" "std" "subtle" ]; }; "dirs" = rec { crateName = "dirs"; @@ -10288,7 +10300,7 @@ rec { { name = "blake3"; packageId = "blake3"; - features = [ "rayon" "std" ]; + features = [ "rayon" "std" "traits-preview" ]; } { name = "bstr"; @@ -10303,6 +10315,10 @@ rec { packageId = "data-encoding"; } { + name = "digest"; + packageId = "digest"; + } + { name = "fuse-backend-rs"; packageId = "fuse-backend-rs"; optional = true; diff --git a/tvix/castore/Cargo.toml b/tvix/castore/Cargo.toml index 584e64adb8ec..a4b74cba1118 100644 --- a/tvix/castore/Cargo.toml +++ b/tvix/castore/Cargo.toml @@ -5,9 +5,12 @@ edition = "2021" [dependencies] async-stream = "0.3.5" -blake3 = { version = "1.3.1", features = ["rayon", "std"] } +async-tempfile = "0.4.0" +blake3 = { version = "1.3.1", features = ["rayon", "std", "traits-preview"] } +bstr = "1.6.0" bytes = "1.4.0" data-encoding = "2.3.3" +digest = "0.10.7" futures = "0.3.30" lazy_static = "1.4.0" parking_lot = "0.12.1" @@ -23,8 +26,6 @@ tower = "0.4.13" tracing = "0.1.37" url = "2.4.0" walkdir = "2.4.0" -bstr = "1.6.0" -async-tempfile = "0.4.0" [dependencies.fuse-backend-rs] optional = true diff --git a/tvix/castore/src/digests.rs b/tvix/castore/src/digests.rs index 137ed2669a8f..8a1938c1b649 100644 --- a/tvix/castore/src/digests.rs +++ b/tvix/castore/src/digests.rs @@ -26,6 +26,13 @@ impl From<B3Digest> for bytes::Bytes { } } +impl From<digest::Output<blake3::Hasher>> for B3Digest { + fn from(value: digest::Output<blake3::Hasher>) -> Self { + let v = Into::<[u8; B3_LEN]>::into(value); + Self(Bytes::copy_from_slice(&v)) + } +} + impl TryFrom<Vec<u8>> for B3Digest { type Error = Error; |