Sorry for the nitpick but I'm curious if I'm off here:
> 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.
The language doesn't force it but some common tooling does. They probably are using something like staticcheck in their setup and conflating it with the core language.
You can ignore it but the compiler will force you to assign it to something, usually `_`. That alone is helpful in reminding the programmer that return values need to thought of, but in addition you have pretty much all Go linters/analyzers force you to check its value and not use `_`.
> 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.