Correct me if I’m wrong, .left = Node{ .atom = 0 } here has a static lifetime so problem solved.
.left = Node{ .atom = 0 }
Here’s the declaration.
const Node = union(enum) { atom: u8, cons: struct { op: u8, left: *const Node, right: *const Node, }, }