Panic is a way for Rust library ecosystem to signal this error in un-recoverable, and is probably a bug in program, for which you would be happy getting Sentry or some such reporting.
Most errors in Rust are handled using mechanisms described in post using Result. Some, this is probably a bug in code, mechanism should be present in other languages.
There are even efforts to make code that can panic detectable at compile time, https://docs.rs/no-panic/latest/no_panic/
Recoverable errors -> Result/Option, i.e. have your types not lie and say "this function open_file() returns either Ok(file) or Err"
Unrecoverable errors -> panic, i.e. crash your program and present a stack trace for debugging
There's a good bunch of programs that are just supposed to read some inputs, perform a task and crash with an error message and exit code if anything goes wrong.
Panics are recoverable.