about summary refs log tree commit diff
path: root/tvix/castore/src/directoryservice/utils.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/castore/src/directoryservice/utils.rs')
-rw-r--r--tvix/castore/src/directoryservice/utils.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/tvix/castore/src/directoryservice/utils.rs b/tvix/castore/src/directoryservice/utils.rs
index 4b060707d4cc..d073c2c3c8ec 100644
--- a/tvix/castore/src/directoryservice/utils.rs
+++ b/tvix/castore/src/directoryservice/utils.rs
@@ -2,6 +2,7 @@ use super::Directory;
 use super::DirectoryService;
 use crate::B3Digest;
 use crate::Error;
+use crate::Node;
 use async_stream::try_stream;
 use futures::stream::BoxStream;
 use std::collections::{HashSet, VecDeque};
@@ -57,15 +58,15 @@ pub fn traverse_directory<'a, DS: DirectoryService + 'static>(
             // enqueue all child directory digests to the work queue, as
             // long as they're not part of the worklist or already sent.
             // This panics if the digest looks invalid, it's supposed to be checked first.
-            for (_, child_directory_node) in current_directory.directories() {
-                let child_digest = child_directory_node.digest();
-
-                if worklist_directory_digests.contains(child_digest)
-                    || sent_directory_digests.contains(child_digest)
-                {
-                    continue;
+            for (_, child_directory_node) in current_directory.nodes() {
+                if let Node::Directory{digest: child_digest, ..} = child_directory_node {
+                    if worklist_directory_digests.contains(child_digest)
+                        || sent_directory_digests.contains(child_digest)
+                    {
+                        continue;
+                    }
+                    worklist_directory_digests.push_back(child_digest.clone());
                 }
-                worklist_directory_digests.push_back(child_digest.clone());
             }
 
             yield current_directory;