Ha, that trick with `Map<T, ()>` is actually really neat, and I'm happy to see that there's no qualms about its efficiency that would preclude its use in the standard library. This post has inadvertently become the most thorough documentation on zero-sized types that I know of, in addition to being the gold standard for guiding people interested in implementing data structures in Rust. :)
Interestingly, if we limit ourselves to pure functions, a ZST corresponds to category-theoretic concept of the terminal object. The latter is defined as such an object (think "type") T that for any other object (think "another type") X there is precisely one arrow (think "function") from X to T [1]. Indeed, if T is a ZST like the empty tuple () then for any type of argument there is precisely one function to T: namely, the one returning T's sole value, ().
Also, Result<T, E> is an example of a variant type corresponding neatly to co-products [2].
Hey @Gankro, your blah/ dir doesn't have an index of all files. Unless you know the links for these Rust posts, you can't really navigate to them. Especially if you keep posting, which you should, I'd keep in mind the navigation to and from these rust-lang posts.