The rest is quite neat though IMO. Not really sure what kind of problem you have with optionals, guards and optional chaining in Swift make working with them quite elegant, especially compared to Rust. And I really like Swift error handling, I think it's among the best on the market right now.
I wonder how much of it is from having to interact with Obj-C APIs where there's a lot more optionals than in "Pure Swift" code. Especially if the implicitly unwrapped optional stuff feels like a bad code smell to you (it does to me). But optionals certainly took me a bit of time to adjust to.
My CLI/Linux Swift projects use few optionals, and so optionals feel right when they do get used. My AppKit/UIKit projects wind up having a ton of optionals in UI code and Core Data code, so it really does help to have a set of guidelines on how to use the myriad of tools for optionals to keep code readable, and to understand where implicitly unwrapped optionals make the most sense.
That said, I'll definitely take Swift's error mechanism over C++-style exception handling any day of the week.
And yeah, I try to specifically avoid a good chunk of the closure syntax Swift provides in favor of a more cut-down version. SwiftUI makes that a bit more difficult.