You're thinking of if let as being some sort of complex sugar for if <bool>, but that's not the right way to think about it. Among other things, it can't possibly work — if let binds a variable that's in scope within the if block, and there's no way to get that from if <bool>. It's better to think of it the other way around: an if statement tests an expression against a pattern and succeeds if it matches. if case is the most general form of that, where you can write an arbitrary pattern. if let uses a specific pattern, which tests for an optional .some. if <bool> is even more specific than that: the pattern is just the value true.
I also found this page. Which was helpful. But I'm not sure what the author means by "club" and "clubbed" maybe "group" and "grouped"? (Were they using google translate?) Also the page locks up at the end. Shame.