[HN Gopher] Rust Module System Encourages Bad Practices ___________________________________________________________________ Rust Module System Encourages Bad Practices Author : flurker Score : 23 points Date : 2023-06-07 21:32 UTC (1 hours ago) (HTM) web link (dmitryfrank.com) (TXT) w3m dump (dmitryfrank.com) | davidhyde wrote: | The author desires a simple folder based module system and argues | how it would improve compilation times. I do agree although it | would be nice to know what flexibility would be lost so the | argument could have some weight on the other side. | | On a tangent I recall struggling with cargo features in the | beginning. I found them to be hidden and mysterious. Even | searching for "rust features" sucks. | physPop wrote: | I feel like the author really overstates how hard it is to make a | new crate. Making a cargo.toml is simple and frankly you don't do | it so often as to be a burden. | | Encouraging cyclic dependencies on the other hand "because it is | easy" seems like a lazy cop out. | jchw wrote: | Well, they seem to be cognizant of that, but they have a point: | compared to simply creating a folder, it is QUITE a lot more | effort. It's like the difference between zero and one. | | That having been said, I think my bigger issue with this is | that this actually gets to be annoying after you do it, not | just while doing it. Go manages _external_ dependencies on the | module level, which is a level higher than packages. For Rust, | it 's crates. So a repo with many crates becomes pretty | cumbersome. (And a bit moreso if you're trying to maintain a | Nix package for said repo, but that's _partly_ the fault of | Nix. Only partly, because I actually think Rust 's toolchain | makes the job of Nix rather difficult...) | flurker wrote: | Making Cargo.toml is annoying enough especially if we're | factoring things out from an existing crate to a separate one: | obviously we'll need to specify all the deps that the code is | already using, and also possibly remove some deps from the old | crate's Cargo.toml, and it can take a good chunk of time just | to put it together. I mean it's nothing that we can't deal | with, but it does slow things down for no good reason. ___________________________________________________________________ (page generated 2023-06-07 23:00 UTC)