【Rust练习】28.use and pub
练习题来自:https://practice-zh.course.rs/crate-module/use-pub.html
1
使用 use 可以将两个同名类型引入到当前作用域中,但是别忘了 as 关键字.
use std::fmt::Result;
use std::io::Result;
fn main() {}
利用as
可以将重名的内容取别名:
use std::fmt::Result as fmtResult;
use std::io::Result;
fn main() {}
C++遇到这种两个include
重名的话需要用命名空间来处理,利用using
仅导入需要的部分。
2
// 使用两种方式填空
// 不要添加新的代码行
use std::collections::__;
fn main() {
let _c1:HashMap<&str, i32> = HashMap::new();
let mut c2 = BTreeMap::new();
c2.insert(1, "a");
let _c3: HashSet<i32> = HashSet::new();
}
第一种就是将collections下所有的内容都导入进来:
use std::collections::*;
这就像C++用using namespace std
一样,我读过的大部分代码书都在告诉我,应该避免这种用法。我觉得在存量的项目确实要避免,但是新的项目就应该这么用。如果你的代码和标准库里的代码冲突了,我觉得这种冲突早晚都要解决,而不是去通过不引入冲突的代码来规避。
所以第二种就是只引入用到的内容:
use std::collections::{BTreeMap, HashMap, HashSet};
哦,对了,如果你用的是VS Code的Rust Analysis,那你直接在每个红波浪线点击快速修复即可:
甚至能自动帮你把三个导入合并成一个中括号,我上次见到这么智能还是PyCharm