Note that macOS syscall interface is specifically unstable so Rust needs POSIX/libc path anyway.
Also on Solaris/Illumos/SmartOS/..., and on OpenBSD (where it's more or less verboten entirely since system-call-origin verification).
AFAIU, you don't need to use libc on OpenBSD, however only one contiguous region of code is permitted to invoke syscalls, and so you can't mix-and-match ad hoc libraries. See https://man.openbsd.org/msyscall, which implements one-time registration of a contiguous range of pages permitted to invoke syscalls.
FWIW the POSIX spec assumes libc, but on Linux specifically the syscall interface is stable.