> that's why newer languages like Go and Rust force you to check errors in return values
Go doesn't require you check return values though, no? I can get a return of type (*Model, error) and just completely ignore the error portion of it and never check it. Rust doesn't let you access the value until you deal with the Result/Option wrapper, requiring that you at least acknowledge the potential for an error.