I’d be totally down for moving this in to the nursery. Some thoughts on your open questions:
Linux offers an “abstract namespace” as a nonportable extension
I would personally lean towards thinking "\0some name" being OK, it’s linux-specific so I don’t mind it being a little weird. This could also go the route of generally using a IntoSocketAddr trait like std::net, however, to make it a little more ergonomic in the future.
I think the question about AddressKind may need to be addressed separately regardless in the sense of the conflicting name of SocketAddr and std::net::SocketAddr. It may be a little difficult to unify these two, but the naming there may be a bit odd and I’d think that it may be nice to perhaps touch up the API of the unix_socket address type anyway (e.g. to perhaps more align with std::net). That being said, I don’t have many concrete opinions in this area just yet.
The SOCK_SEQPACKET socket type is a third variant that exists but is not currently supported.
This seems fine to me, the TCP/UDP sockets don’t support more flavorful socket types either, and the FromRawFd constructor is always there if necessary.
The sendmsg and recvmsg functions can be used to perform more advanced tasks with Unix sockets
Like SEQPACKET, this seems flavorful enough to punt on for now. AsRawFd exists for a reason!
Some other thoughts on the API
UnixStream::pair
I think that an analagous API exists for TCP as well (e.g. using the same socketpair implementation on unix), although it may be a Unix-specific extension.
UnixDatagram::unbound
This seems similar to net2::UdpBuilder?
UnixDatagram::{send, recv}
I think these are the two methods which don’t exist on UdpSocket and only work for connected sockets, but does seem fine to me to have.