hiro99ma blog

rust: match の arm 区切りコンマはなくてもよい場合がある

Rust の clap でコマンドをコピペで列挙していたのだが、 match の各アームをコンマで区切っていないのにエラーになっていないことに気付いた。
ChatGPT 氏に訊くと改行区切りだという。

エラーにならないならそれでよいのだが、理屈が分からないのは不安だし、 コンマを付けて良いならそっちの方が他のコードと統一できてありがたいのだ。

サンプルコードはだいたいコンマ区切り

特にこの辺のドキュメントにはそういったことは書かれていない。

こっちの文には「各アームは次のアームとカンマで区切られています(Each arm is separated from the next with a comma)」と書いてあった。 ただ、これはサンプルコードがそうなっているので現状を述べているだけかもしれない。

リファレンス

BNF かどうかわからないが説明ページがあった。

こういうことだよ・・・な?

image

言えることは、コンマを付けておけば間違いは無い、だ。
コンマを必須にしておいてもよいような気はするが、 そうすると JSON の最後の要素がコンマがあってはダメ、みたいなのと同じような面倒さが発生するのかもしれない。

おまけ

JSON の最後のコンマ処理を C言語でライブラリなど使わずに書くのが面倒で、 私は for 文の最初に「0回目 以外はコンマを付ける」みたいに書いていた。
しかし今思えば、どうせ strcat() などでつないでいたんだろうから for 文の中では毎回コンマ付きで出力して、抜けたときに 1文字戻して \0 を書いておけば済んだんじゃなかろうか。

そんなどうでもよいことを思い出した。

writer: hiro99ma
tags: Rust言語

 
About me
About me
comment
Comment Form
🏠
Top page
GitHub
GitHub
Twitter
X/Twitter
My page
Homepage