#include #include #include "foo.h" int main(void) { for (int i = 0; i < 4; i++) { auto val = foo(i); // (int | str | void) HARE_MATCH (val) { HARE_CASE(i, HARE_TAG_int): printf("%d\n", i); HARE_CASE(s, HARE_TAG_str): assert(s.len > 0 && s.data[s.len - 1] == '\0'); puts(HARE_NULSTR(s)); if (s.len == 1) { break; // breaks from HARE_MATCH } for (size_t j = 0; j < s.len; j++) { printf("%c\n", s.data[j]); } HARE_CASE(_, HARE_TAG_void): // no-op } } }