use 与路径
导入项目
use 与路径 是 CoddyKit 上的免费 Learn Rust Coding 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn Rust Coding 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn Rust Coding 课程共包含 4 节课。
将项目引入作用域
到处输入完整路径(例如std::collections::HashMap)很繁琐。use关键字会将项目引入作用域,这样您就可以使用简短名称引用它。
基本的 use
使用use后,您可以通过项目的最后一段名称来引用它。这里我们导入HashMap并直接使用它。
use std::collections::HashMap;
fn main() {
let mut scores = HashMap::new();
scores.insert("ana", 10);
println!("{:?}", scores.get("ana"));
}绝对路径与相对路径
绝对路径从crate(包根)开始。相对路径从当前模块开始,也可以选择使用self或super。
mod a {
pub mod b {
pub fn hi() { println!("hi from b"); }
}
pub fn call_b() {
crate::a::b::hi();
self::b::hi();
}
}
fn main() {
a::call_b();
}模块中的 use
use只会影响它所在的作用域。将它放在模块顶部,可以缩短该模块中后续使用的名称。
mod work {
use std::collections::HashSet;
pub fn run() {
let mut s = HashSet::new();
s.insert(1);
s.insert(1);
println!("size {}", s.len());
}
}
fn main() {
work::run();
}使用 as 重命名
当两个项目名称相同,或者名称过长时,可以在导入时使用as进行重命名。
use std::collections::HashMap as Map;
fn main() {
let mut m: Map<&str, i32> = Map::new();
m.insert("x", 1);
println!("{:?}", m.get("x"));
}分组导入
使用花括号,可以在一行中从同一路径导入多个项目。这样可以让导入部分保持整洁。
use std::collections::{HashMap, HashSet};
fn main() {
let map: HashMap<i32, i32> = HashMap::new();
let set: HashSet<i32> = HashSet::new();
println!("{} {}", map.len(), set.len());
}嵌套分组与 self
在分组中,self会将模块本身与其中的项目一起导入。这样您既可以使用模块名称,也可以使用特定成员。
use std::io::{self, Write};
fn main() {
let _ = io::stdout().write_all(b"hello\n");
}通配符导入
通配符*会从某个路径导入所有公开项目。请谨慎使用它——它可能会隐藏名称的来源——但它常用于预导入模块和测试。
mod colors {
pub fn red() -> &'static str { "red" }
pub fn blue() -> &'static str { "blue" }
}
use colors::*;
fn main() {
println!("{} {}", red(), blue());
}惯用的导入风格
约定是:通过父模块导入函数(use std::cmp; cmp::max(...)),但按名称导入类型(use std::collections::HashMap;)。这样调用的意图会更加清晰。
use std::cmp;
fn main() {
println!("{}", cmp::max(3, 9));
}外部包的路径
对于依赖项,路径以包名称开头,例如rand::thread_rng。您需要在Cargo.toml中列出该包,然后像导入std中的项目一样导入它。
保持导入整洁
将相关导入分组,重命名以避免冲突,并在应用程序代码中优先使用明确导入,而不是通配符导入。整洁的导入可以让文件更容易浏览。
快速检查
测试您对路径的理解。
回顾
您已经学会导入项目:
use通过简短名称将项目引入作用域- 绝对路径从
crate开始;相对路径使用self/super as用于重命名,花括号用于分组,*用于通配导入- 按名称导入类型,按父模块导入函数,可以让代码更清晰
常见问题解答
「use 与路径」课时是免费的吗?
是的 — 「use 与路径」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn Rust Coding 课程的其余内容,请升级到 CoddyKit PRO。 Learn Rust Coding 课程共包含 4 节课。
「use 与路径」这节课中我会学到什么?
导入项目 你通过在浏览器中直接运行的动手代码来练习 Learn Rust Coding,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn Rust Coding 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn Rust Coding 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「use 与路径」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn Rust Coding 课中编写并运行代码吗?
能。每节 Learn Rust Coding 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。