The answer from the article is that the IR optimizer, acting on the LLVM bitcode, is able to combine the separate lines for getting the quotient and the remainder into one assembly instruction.
The problem with the article is that the same argument applies to any sufficiently good optimizing compiler, and therefore it is not obvious at all why C needs the div() function and Rust does not.