One reason that I’ve used the crates version of compile-test for is checking that lifetime bounds are behaving as you expect and prohibiting misuse of your code (where the internals are unsafe).
The most complicated use I’ve done is with an interner that gave out &str to members on an append-only HashSet<String>. I needed to make sure that the lifetimes given were bound correctly when I conjured them from thin air.
(To gloss over details, I had a StringInterner(&'a mut HashSet<String> and fn StringInterner(&self, &str) -> &'a str. This required unsafe to implement and I was checking that the lifetime did guarantee what I wanted it to (and the first few iterations didn’t).)