From 21ceef4934b28a0c3a4f6faa2035021dfe8b3c3d Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Fri, 16 Aug 2024 18:12:39 +0300 Subject: refactor(tvix/castore): add into_nodes(), implement consuming proto conv Provide a into_nodes() function on a Directory, which consumes self and returns owned PathComponent and Node. Use it to provide a proper conversion from Directory to the proto variant that doesn't clone. There's no need for the one taking only &Directory, we don't use it anywhere, and once someone needs that they might as well clone Directory before converting it. Update all other users of the `.nodes()` function to use `.into_nodes()` where applicable, and avoid some more cloning there. Change-Id: Id4577b9eb173c012e225337458898d3937112bcb Reviewed-on: https://cl.tvl.fyi/c/depot/+/12218 Tested-by: BuildkiteCI Autosubmit: flokli Reviewed-by: Connor Brewster --- tvix/castore/src/nodes/directory.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'tvix/castore/src/nodes') diff --git a/tvix/castore/src/nodes/directory.rs b/tvix/castore/src/nodes/directory.rs index 03db30b52408..a11fbf314bd0 100644 --- a/tvix/castore/src/nodes/directory.rs +++ b/tvix/castore/src/nodes/directory.rs @@ -50,6 +50,12 @@ impl Directory { self.nodes.iter() } + /// Dissolves a Directory into its individual names and nodes. + /// The elements are sorted by their names. + pub fn into_nodes(self) -> impl Iterator + Send + Sync { + self.nodes.into_iter() + } + /// Adds the specified [Node] to the [Directory] with a given name. /// /// Inserting an element that already exists with the same name in the directory will yield an -- cgit 1.4.1