const generics が不完全なのと向き合わざるを得なくなっており、設計悩みフェーズに入った
bitflags 的なやつで複数属性をシュッと u32 にして渡せたら楽なんだけど、たぶん bitwise OR とかを const generics の文脈で使えないので……
RFC3339 syntax variants: case sensitivity and separator (#1) · イシュー · NOP Thread / datetime-string · GitLab
https://gitlab.com/nop_thread/datetime-string/-/issues/1
https://docs.rs/iri-string/0.5.0/iri_string/spec/index.html
iri-string のときはせいぜい URI, IRI, その拡張、くらいのものしか考えられなかったし組み合わせもそんなに考慮の必要がなさそうだったので、各文法バリエーションに仕様を表現する専用の型を定義することで解決したんだけど
これがオプションの組み合わせとなってくると、オプションの種類ごとに累乗オーダーで組み合わせが増えていくので、型をいちいち用意しているとつらいし名前も長くなるしで、引数でどうにかせざるをえない
単一のオプションを表現する bool を const generics で持つ型を用意して、そのタプルに対して Spec trait 的なものを実装するというのも考えたには考えたんだけど、タプル内の型の順番を正規化しないと同一の型として扱えないみたいなの純粋に (ユーザとしても開発者としても) ダルいのでちょっと保留