Also, the article goes into great depth as to what is happening there, and the borrow checker never comes up.
Doing this on the whole program eats a lot of memory.
However, in my understanding, it takes that IR, does build a borrow graph, computes liveliness, and then does inference. There's been a number of details in how this has changed over the years, but it's vaguely datalog shaped.