Advertisement
Guest User

zig generic struct methods

a guest
Mar 23rd, 2021
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. fn Node(comptime T: type) type {
  2. return struct {
  3. parent: ?*Node(T),
  4. children: [2]?*Node(T),
  5. color: Color,
  6. data: T,
  7. };
  8. }
  9. fn Iterator(comptime T: type) type {
  10. const ret = struct {
  11. node: ?*Node(T),
  12. pub fn next(self: ret) ?*Node(T) {
  13. std.debug.print("{}\n", .{self.node});
  14. if (self.node) |n| {
  15. if (n.children[1]) |c| {
  16. node = c;
  17. while (node != null) node = node.?.children[0];
  18. } else node = node.parent;
  19. return node;
  20. } else return null;
  21. }
  22. };
  23. return ret;
  24. }
  25. pub fn main() void {
  26. var it = Iterator(i32){.node = rb.root};
  27. while (it.next()) |e| std.debug.print("{} ", .{e});
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement