A panic in Rust is easier to diagnose and fix than some error or grabage data that was caused by an out of bounds access in some random place in the call stack
I find the error story a horror one, mainly because it's quite easy to omit an error check when the err variable is reused which leads to weird crashes and garbage data, same happens when the error is explicitly ignored.
I wouldn't call tuples or error types weird, they're just poorly designed under the pretense of keeping the language (and first of all the compiler) simple.
It's not Go who popularized channel based concurrency, it's Erlang and Elixir.
In TypeScript or Python or any other language with unchecked exceptions you will rethrow and very likely the exception will be caught by te runtime when you least expect because someone else didn't bother handling it.