This is an Advent of Code solution. Click to reveal!
The cogs are turning...
    
https://zigbin.io/9327b5Click to copy
https://zigbin.io/9327b5/runClick to copy
https://zigbin.io/9327b5/rawClick to copy
const std = @import("std");
const input = @embedFile("words.txt");
const print = std.debug.print;
const StringArray = std.ArrayList([]const u8);
const allocator = std.heap.page_allocator;

pub fn main() !void {
    var graph = buildGraph;
}

const Node = struct {
    value: []const u8,
    neighbors: *std.ArrayList(*const Node),
    visited: u8,
};

fn buildGraph() !std.ArrayList(Node) {

    var graph = std.ArrayList(*const Node).init(allocator);
    var it = std.mem.tokenize(input, "\n");

    while (it.next()) |word| {
        var node = Node {
            .value = word,
            .neighbors = &std.ArrayList(*const Node).init(allocator),
            .visited = 0,
        };
        try graph.append(&node);
    }

    for (graph.items) |node| {
        print("{}", .{node});
        for (graph.items) |next_node| {
            node.visited = 1; // ERROR
            try node.neighbors.append(&next_node); // ERROR
//            next_node.neighbors.append(&node);
        }
    }

    return graph;
}