rust-lang / rustlings

:crab: Small exercises to get you used to reading and writing Rust code!
https://rustlings.cool
MIT License
54.7k stars 10.21k forks source link

Instructions not clear for: `modules/modules2.rs` #1346

Open archcorsair opened 1 year ago

archcorsair commented 1 year ago
// TODO: Fix these use statements
use self::fruits::PEAR as ???
use self::veggies::CUCUMBER as ???

// ... snip

fn main() {
    println!(
        "favorite snacks: {} and {}",
        delicious_snacks::fruit,
        delicious_snacks::veggie
    );
}

At first glance it seems as though the solution would simply be to replace the ??? with respective fruit and veggie; However after much struggling and leaning on the rust discord community for assistance it was pointed out that the use statement itself should also be changed to pub use. This was not clear in the original problem, as the concept of making an import public is not one I'm accustomed to coming from other languages. The compiler doesn't event suggest this change, making it even more difficult to come to the correct answer without external assistance.

shadows-withal commented 1 year ago

Yeah, good point, I'd imagine we can probably rewrite this exercise as a whole anyways, it's kind of clunky.

justin-thurman commented 1 year ago

Including a link to the Rust Book documentation on re-exporting names in the hint might make this one clear enough. I also fumbled with this exercise a bit, but I knew I had read something in the Rust Book about this. I just couldn't remember where it was.

dlloyd1 commented 3 weeks ago

In addition to the above, could this exercise benefit from extending the TODO comment directive to include a subtle nod to the fact that each use statement requires two distinct changes or perhaps that fixing the compiler error is a two-stage process here?

Step one: identify and correct the alias in the use statement Step two: correct the access level of the constant import

The use of ??? here was helpful but made me zone in on it a bit too much, and I think that prevented me understanding what was needed properly.