練習題來自: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