I usually don't defend Windows, but, rename not overwriting (without an argument) seems safer as a low level API, no? Given it takes a 2 line helper to achieve the same thing in C++ [1], doesn't seem that bad.
[1] https://gitlab.com/jeffreyrogers27/AtomicWrite/blob/master/A...