I think I've worked out one reason I dislike working with Rust. Consider this phrase:
"For example, there is no way to write this function in a way that is generic over the Container trait"
This kind of phrasing is very common in the Rust world. But what does "generic over a trait" *mean*, exactly? I can look up what a trait is just fine, and 'generic' too, but 'over' is far too generic of a word to find anything helpful.
This is just one example, and it's not really about this specific question - more that Rust documentation often uses words in ways that are ambiguous to me, with no clear path to figuring out what is meant there.
@joepie91 it seems to me (as a non rust user) that Rust treats docs and errors as more of a first class feature, at least compared to other languages, so they may be quite receptive to an issue report about this. maybe phrased as a documentation style guide suggestion, like "avoid saying 'x over y' without explanation and example, since the meaning is hard to search for". (I appreciate that it's a hassle to submit issues when you're running into frustrations and just want to get stuff done)
@gsuberland I'm having trouble distilling this into a concrete request, to be honest - in this case it's about the word 'over', but it happens for any amount of common words used in specific ways. I'm not sure how I would summarize this in an issue while still conveying it accurately and without narrowing it down to specific words too much...
@joepie91 yeah, it's tricky. something along the lines of "a pattern of language where two well-defined Rust language terms are used together to form a phrase whose meaning is greater than the sum of its parts, and whose meaning is not explained or easily searchable", then giving some concrete examples with two or more conjunctions ("over" and whatever else you've noticed). a mention of search engines often ignoring verbatim requests these days may also help motivate.
@gsuberland Thanks, that helps. I'll mill this over for a bit.
@joepie91 definitely appreciate that this is a tricky thing to articulate. I spent the last 12 years writing technical explanations for a living and I still had to draft about 8 versions of that to get the right meaning across >_<
@joepie91 yeah, every time I use rust I get that c++ "you must be a language lawyer to use this effectively" vibe
@joepie91 it literally just means a trait bound:
fn foo(x: T) {…}
Or
fn bar(x: impl Container) {…}
As to why this is the case, I would need more info about what restriction they’re talking about but it sounds like they’re actually explaining that.
... and I suppose that another reason I dislike working with #Rust, is that it's always "you can use this feature X except in cases where Y" and for every X there's a different Y, there doesn't seem to be a restricted set of basic code organization techniques that you can universally apply, you always have to learn a million edge cases to get anywhere