> It’s an error handling magic for async functions
The question mark operator is unrelated to async - you might say "fallible functions" instead.
> This indicates that it’s a macro. Basically a shortcut.
I don't think "shortcut" has a specific meaning that is related to macros in either Javascript or Rust.
> An implementation of trait. So class (?).
Not really a class. There isn't a good parallel to this in most other languages. It is the link between a trait and a type, and provides a specific implementation of the trait.
> Unlike JS, Rust has a type for the result of the promise/future called Result
The `Result` type is not related to futures. Any function can return a `Result`, and a future can yield any type (not necessarily a `Result`, although it is commonly used in that way).
> The Result enum has Ok and Err. If the future is successful, it returns Ok, otherwise Err.
Again, no relation between `Result` and futures.
> Use this when you’re confident that it won’t error.
Personally I would recommend never using `unwrap` outside of tests. If you want to panic on the `Err` case, then `expect("...")` allows you to provide an explanation for why the `Err` case should not have been possible.