0Pricing
Learn Rust Coding · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 模块与 mod
  2. pub 与可见性
  3. use 与路径
  4. Crate 与 Crate 根
← 返回 Learn Rust Coding