What's up with all the people in this thread that get philosophical about what is garbage and what is collecting? This is computer science, terms have specific meanings given to them by whoever coined them. Garbage collection is not "any system where you don't have to say "free" to free the memory". No, garbage collection is a very specific strategy that has the following characteristics:
Memory has to be requested to the GC for it to be tracked by the GC. The GC gets memory from the OS, keeps track of its existence, and gives you a handle to that memory.
The GC periodically checks which GC handles are still reachable.
Usually, using non-GC managed values that can access GC managed values requires notifying the GC about it, so that an exception is made.
Put it simply, the GC acts like a kind of pseudo-OS between you and the OS, that is much smarter and can recognize at runtime when a value in memory is no longer needed and free it. This is not the same as strategies such as reference counting, where you create individual handles that point to a location in memory and have a destructor that frees the memory if a certain condition is found. This is just automated manual memory management, and you can still f* up (e.g. if you create two shared pointers that point to each other, none of them will ever delete their value, even though both are unreachable).
Sorry for not answering the question. Many people have done that already. I'm just writing this down because there's an impressive amount of answers saying "akchually Rust is garbage collected if we count turning on the computer as "garbage collection"", which is just gonna confuse people.