Understanding More Complex Topics As a Self Taught Programmer
Alright, so I'm sure there's been several threads on this so I apologize for asking something that's probably been asked a lot before, but I'm looking for a little guidance on developing as a rustacean/programmer.
A little background, I attended university for a few years studying computer science before ultimately dropping out. In spite of dropping out, I kept up with programming and managed to teach myself a lot, but most of what I did was in Javascript or Python. I was "decent". About 2 years ago, I decided I wanted to develop more as a programmer and decided to pick up Rust.
I've loved it, and rewritten a lot of old projects, and worked on several new ones, but I feel like I've hit this plateau. I see people talking about things like Rcs, Arcs, Cell, RefCell, Mutexes, Boxes, Trait Objects, Macros, Fn/FnMut/FnOnce, the 'Dyn' keyword, etc. and just feel lost. Like, no doubt these are powerful tools, and even though I've read about all of them in the Rust book, I (a) have no idea how or when to implement them, and (b) feel like none of them have really clicked conceptually, nor will they until I manage to fulfill point a. I'm also wondering which of these topics are more essential, (or if any of them even are).
So I guess what I'm asking is for advice on how to proceed with this kind of stuff. Is there another book, set of videos, online course you would recommend? If you had a similar journey (or if you didn't), how did you get into the deeper features of the language, and what would you suggest to new learners?
EDIT: To better qualify the last paragraph, I'm not asking for more theory; theory is not the problem I have. The problem is I feel like when I'm working on my projects, I end up hacking together a solution or taking the easy way out (e.g. cloning a variable). If there's a resource that showcases these topics in action, that's the kind of resource I'm interested in