原則として整形そのものはエラーを出しえないような方式でやる必要があり、整形以外の部分 (I/O とか) でエラーが出た場合は I/O を管轄するオブジェクト側に記憶しておいて、 core::fmt::Display を受け取った caller 側が後でそれを取り出す、みたいな実装をすることになる。迂遠だけど std::fmt::Error をシンプルかつバックエンド非依存にするとそうなる
https://x.com/nop_thread/status/1561221158581968897 #tw
(Web Archive: <https://web.archive.org/web/20220821140211/https://twitter.com/nop_thread/status/1561221158581968897>)
これブヨグに書けるネタだよなぁと思いつつ放置し続けている (なぜならブヨグの方を完成させていないため)
端的にまとめると、 std::fmt の内外で FFI 境界を跨いでいるかのようなエラー伝播の設計になっているという話