linker: remove dependency on std.fifo

This commit is contained in:
Andrew Kelley 2025-08-01 21:44:56 -07:00
parent 493265486c
commit dabae3f9dc

View File

@ -138,18 +138,23 @@ fn finalize(self: *Trie, allocator: Allocator) !void {
defer ordered_nodes.deinit(); defer ordered_nodes.deinit();
try ordered_nodes.ensureTotalCapacityPrecise(self.nodes.items(.is_terminal).len); try ordered_nodes.ensureTotalCapacityPrecise(self.nodes.items(.is_terminal).len);
var fifo = std.fifo.LinearFifo(Node.Index, .Dynamic).init(allocator); {
defer fifo.deinit(); var fifo: std.ArrayListUnmanaged(Node.Index) = .empty;
defer fifo.deinit(allocator);
try fifo.writeItem(self.root.?); try fifo.append(allocator, self.root.?);
while (fifo.readItem()) |next_index| { var i: usize = 0;
const edges = &self.nodes.items(.edges)[next_index]; while (i < fifo.items.len) {
for (edges.items) |edge_index| { const next_index = fifo.items[i];
const edge = self.edges.items[edge_index]; i += 1;
try fifo.writeItem(edge.node); const edges = &self.nodes.items(.edges)[next_index];
for (edges.items) |edge_index| {
const edge = self.edges.items[edge_index];
try fifo.append(allocator, edge.node);
}
ordered_nodes.appendAssumeCapacity(next_index);
} }
ordered_nodes.appendAssumeCapacity(next_index);
} }
var more: bool = true; var more: bool = true;