I think the main advantage of the intrusive definition is that you can use it to implement the non intrusive one easily, whereas the reverse isn't possible.
With a non-intrusive linked list type, can't you define the intrusive version as `Node<void>`?
If that is possible in Zig to have a "void" struct field, then you are correct, but wouldn't this block a third-party user from defining a struct field named data later?