4 ms·
Am I the only one that dislikes the dot syntax for variants? Zig and Swift do it and I feel like it makes things harder to read, not easier. `.variant` vs `Ty
by hardwaresofton 2y ago
Am I the only one that dislikes the dot syntax for variants?
Zig and Swift do it and I feel like it makes things harder to read, not easier.
`.variant` vs `Type::Variant`
IIRC the syntax is optional (you can include the type name) but it seems obvious that in any sufficiently long or complex code, not having the type name close would be annoying, especially if you didn’t have IDE like capabilities in your editor.
- Klonoar 2y agoI've said it in other comments on HN over the years, but yes - I agree. That `.variant` syntax is annoying as hell to dig through when you don't have an IDE to rely on for jumping around. Rust (or your choice of other more explicit language) is just generally way more clear about what's being used. The way I usually settle on describing it is that this feature solved for people writing code, but code is read more than it's written, and thus I don't believe this tradeoff was worthwhile.
- afdbcreid 2y agoYou will probably be sad to hear that allowing to omit the type in Rust is considered, and has been proposed many times.
- Klonoar 2y agoI can only hope that it's been proposed many times and not actioned on before means there's been enough pushback, considering one of the entire points of the language is the explicit nature of it. Do you have a link for an RFC or GitHub issue or anything? Would be curious to see.
- robjwells 2y agoFortunately in Rust you can have it both ways, as in `Type::Variant` most of the time and `use Type::Variant; … Variant …` in cases where the type name just causes noise. Example in the playground: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=455792818473fba5587d8876b8d4e87d https://play.rust-lang.org/?version=stable&mode=debug&editio...
- hardwaresofton 2y agoI’ve never done this but this is a great point. I think I’d avoid doing this though because variants often have really short, reusable/general names (leaning into the overall type name being close)
- GrantMoyer 2y agoYou can put the use statement in the function with the match, or even limit the scope further: { use MyEnum::*; match my_enum {…} }