Is there anything in particular you have questions about? For example: when to use reference counting? How you might implement a reference-counting system? How to use
Rc specifically? This might help us answer your questions more effectively!
I do tend to think of Reference Counting as a type of garbage collection, even in the context of rust (but you have to look at the term in a slightly more generic context). You can think of “garbage collection” as meaning “how do I know if I can free this resource (like memory)”, then reference counting is a way to do this.
As an analogy, let say you are sitting in your living room watching TV with your family, and you want to know when you can turn the TV. Here is what most people do in this scenario: when they leave the room, they look to see if there is still someone in the room watching TV. If there is, they just leave the room and leave the TV on. But when the last person leaves the room, they see that no one else is watching TV, and turn it off as the leave. Let’s call this “TV watcher counting”
To make this analogy slightly more accurate, we have to figure out what we mean by a “reference”. Let’s say that not everyone in the room is watching TV – some people are reading books. When someone sits down to watch TV, they put a little sticky note on the TV, which says “I am watching this”. When they leave the room, they remove their little sticky note. Instead of looking to see if anyone is in the room before turning off the TV, they look to see if there are any sticky notes left. If not, turn off the TV! In this example, the sticky notes are references.