-
Notifications
You must be signed in to change notification settings - Fork 120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
derive-gettersをamplify_deriveに入れ替える #460
Comments
いや冷静に考えるとこれも程度問題ですね…
voicevox_core/crates/voicevox_core/src/status.rs Lines 197 to 199 in 0049bc5
voicevox_core内での具体例だと他に出てこない... まあ関数内での定義だったり、 |
issue作成ありがとうございます! 大前提として、どっちでも良いだろうなという感じです。 という前提はありますが、せっかくなので両方のライブラリを眺めさせていただきました。 ただコメントを読んで、課題になる点もあってくるんだろうなと思いました。 |
せっかくなのでゴール感のすり合わせができればと思って追加でコメントしてみます。 ここに関与することは割りと積極的に改善していきたいのですが、そうじゃない点に時間を書けているとこれらの点の改善が遅れてしまうので、どうしても後回しになってしまいます。 なので提案は嬉しいし意味のあることだとは思うのですが、熱量がずれちゃっててもったいないなーと。 |
内容
voicevox_core
でgetterを生成するたに使われているderive-gettersをamplify (amplify_derive)に入れ替えます。このリポジトリには現在PRが溜まりまくっているため、今はissueを作るのみに留めます。derive-gettersには制限があって限られた形の生成しかできませんし、おそらく新機能の導入も今後無いでしょう。例えば
String
のフィールドを&str
として出すことができませんし、デフォルト値の設定もできません (#214)(こっちはderive-newの話でした。下で #214 の話を入れた時に混じった)。 あと&mut
のgetterも作れません。(追記) 「
Copy
なやつも問答無用で(&self) -> &T
の形になる」を入れ忘れてました。これが一番大きい。amplifyであれば慣習的な形のgetterを生成できると思います。将来Rust APIを提供できるかもしれないことを考えると、検討しても良いかと思います。
またamplifyは現在、少なくともderive-gettersよりは活発に開発されているように見えます。これだけでも理由になるかと。
Pros 良くなる点
Cons 悪くなる点
なし
実現方法
VOICEVOXのバージョン
0.15.*
OSの種類/ディストリ/バージョン
その他
そもそもRustでは他言語ほどgetterを執拗に作る必要は無いのではと思っています。C-STRUCT-PRIVATEもあらゆるfieldの露出をgetter/setterにしろとは言ってないはず。例えばこれには流石に要らないと感じています (将来的にフィールドを追加するのであれば
#[non_exhaustive]
でも付けておけばよい)。voicevox_core/crates/voicevox_core/src/status.rs
Lines 168 to 173 in 0049bc5
あと話が少々ずれるかもしれませんが、別の場所で「Rustはbatteries excludedだ」的なことを言ったりしてたのですが、表現したいことを歪められてしまう場合に限ってはコード量が膨れてでも「標準的な」書き方を優先するべきだとも思っています。(derive-newの方の話ですが)今考えると #214 のときに #220 を出すんじゃなくてそういうことを言うべきだったと思ってます。
The text was updated successfully, but these errors were encountered: