そもそものアプローチというか
エラーが起きない時か気にしなくてよい時 → デストラクタによる自動処理任せでOK
エラーやその有無を必ず欲しい時 → flushやcloseなど自分で呼べばエラー取得できる

とはいえそれさえ書くのを忘れた時に
Rustコンパイラがコンパイルエラーとする機能も持てそうだとわかったから
さらなる機能向上に期待

GC言語はデストラクタによる自動処理すらないからそれ以前の問題だし
後始末の処理や指示を忘れてもエラーとならないし
忘れてクローズされていないファイルディスクリプタが多数溜まっていくこともよくあるw