Question
你好,我是悦创。
学员答疑:
- https://code.bornforthis.cn/?id=4e72084d-1eaf-44ed-8067-744671491574
- https://code.bornforthis.cn/?id=664ff169-41d6-409f-a05b-02ed42279759
问题代码:
// You can bring module paths into scopes and provide new names for them with
// the `use` and `as` keywords.
#[allow(dead_code)]
mod delicious_snacks {
// TODO: Add the following two `use` statements after fixing them.
use self::fruits::PEAR as fruits;
use self::veggies::CUCUMBER as veggies;
pub mod fruits {
pub const PEAR: &str = "Pear";
pub const APPLE: &str = "Apple";
}
pub mod veggies {
pub const CUCUMBER: &str = "Cucumber";
pub const CARROT: &str = "Carrot";
}
}
fn main() {
println!(
"favorite snacks: {} and {}",
delicious_snacks::fruit,
delicious_snacks::veggie,
);
}
报错:
D:\LagerA\rust\a-ex\rustlings git:[master]
rustlings run modules2
error[E0425]: cannot find value `fruit` in module `delicious_snacks`
--> exercises/10_modules/modules2.rs:25:27
|
11 | pub const PEAR: &str = "Pear";
| ------------------------------ similarly named constant `fruits` defined here
...
25 | delicious_snacks::fruit,
| ^^^^^ help: a constant with a similar name exists: `fruits`
error[E0425]: cannot find value `veggie` in module `delicious_snacks`
--> exercises/10_modules/modules2.rs:26:27
|
16 | pub const CUCUMBER: &str = "Cucumber";
| -------------------------------------- similarly named constant `veggies` defined here
...
26 | delicious_snacks::veggie,
| ^^^^^^ help: a constant with a similar name exists: `veggies`
warning: unused import: `self::fruits::PEAR as fruits`
--> exercises/10_modules/modules2.rs:7:9
|
7 | use self::fruits::PEAR as fruits;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: unused import: `self::veggies::CUCUMBER as veggies`
--> exercises/10_modules/modules2.rs:8:9
|
8 | use self::veggies::CUCUMBER as veggies;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For more information about this error, try `rustc --explain E0425`.
error: could not compile `exercises` (bin "modul
es2") due to 2 previous errors; 2 warnings emitted
Error: Ran exercises/10_modules/modules2.rs with errors
Solution
#[allow(dead_code)]
mod delicious_snacks {
// 使用 `use` 语句将常量导入到模块的顶层作用域
pub use self::fruits::PEAR as fruit;
pub use self::veggies::CUCUMBER as veggie;
pub mod fruits {
pub const PEAR: &str = "Pear";
pub const APPLE: &str = "Apple";
}
pub mod veggies {
pub const CUCUMBER: &str = "Cucumber";
pub const CARROT: &str = "Carrot";
}
}
fn main() {
println!(
"favorite snacks: {} and {}",
delicious_snacks::fruit,
delicious_snacks::veggie,
);
}