Remix.run Logo
masklinn 5 days ago

> Granted, these repercussions of these defaults also result in (in my opinion) verbose language constructs like iter, into_iter, iter_mut ↩

Note that assuming the into_iter comes from IntoIterator that’s what the for loop invokes to get an iterator from an iterable. So

    for lr in LoadRequests.into_iter() {
Is completely unnecessary verbosity,

    for lr in LoadRequests {
Will do the exact same thing. And the stdlib will generally implement the trait with the relevant semantics on shared and unique references so

    for lr in LoadRequests.iter_mut()
Can generally be written

    for lr in &mut LoadRequests
So you rarely need to invoke these methods outside of functional pipelines if you dislike them (some prefer them for clarity / readability).
Waterluvian 5 days ago | parent [-]

This is where I think linters can shine as educational tools. Underline either as an error and you’ve taught someone something that’s actually quite tricky to discover on your own.

Similar to all the times I defensively str(something) in Python to find that “oh that has __str__ called on it anyways.”

bayesnet 4 days ago | parent [-]

When I was starting out in rust, replacing my IDE’s `cargo check` invocation with pedantic clippy (which has a lint for this use of `into_iter` [0]) was very useful in learning these parts of the language.

[0]: https://rust-lang.github.io/rust-clippy/master/index.html#ex...