use and pub
- 🌟 使用
use可以将两个同名类型引入到当前作用域中,但是别忘了as关键字.
1. use std::fmt::Result;
2. use std::io::Result;
4. fn main() {}
- 🌟🌟 如果我们在使用来自同一个包或模块中的多个不同项,那么可以通过简单的方式将它们一次性引入进来
2. // 使用两种方式填空
3. // 不要添加新的代码行
4. use std::collections::__;
6. fn main() {
7. let _c1:HashMap<&str, i32> = HashMap::new();
8. let mut c2 = BTreeMap::new();
9. c2.insert(1, "a");
10. let _c3: HashSet<i32> = HashSet::new();
11. }
使用 pub use 进行再导出
- 🌟🌟🌟 在之前创建的
hello-package的库包中, 添加一些代码让下面的代码能够正常工作
1. fn main() {
2. assert_eq!(hello_package::hosting::seat_at_table(), "sit down please");
3. assert_eq!(hello_package::eat_at_restaurant(),"yummy yummy!");
4. }
pub(in Crate)
有时我们希望某一个项只对特定的包可见,那么就可以使用 pub(in Crate) 语法.
示例
1. pub mod a {
2. pub const I: i32 = 3;
4. fn semisecret(x: i32) -> i32 {
5. use self::b::c::J;
6. x + J
7. }
9. pub fn bar(z: i32) -> i32 {
10. semisecret(I) * z
11. }
12. pub fn foo(y: i32) -> i32 {
13. semisecret(I) + y
14. }
16. mod b {
17. pub(in crate::a) mod c {
18. pub(in crate::a) const J: i32 = 4;
19. }
20. }
21. }
完整代码
至此,包与模块章节已经结束,关于 hello-package 的完整代码可以在这里 找到.
你可以在这里找到答案(在 solutions 路径下)
