Rust use 路径导入

发布时间: 更新时间: 总字数:586 阅读时间:2m 作者: 分享 复制网址

Rust使用use关键字将公共条目导入到作用域内

示例

  • lib.rs
// define mod
mod some_mod {
    pub mod some_sub_mod {
        pub fn some_fn() {}
    }
}

// use import mod, only import public item
use crate::some_mod::some_sub_mod;  // 绝对路径导入
// use some_mod::some_sub_mod;  // 相对路径导入

// invoke fn
pub fn some_pub_fn() {
    some_sub_mod::some_fn();  // call public fn some_fn()
}

说明:

  • 函数通常引入到父模块,当然也可以引入到函数,但路径太长
  • struct、enum 等通常指定完整的路径
  • 若两个模块函数名称相同,需要引入到父模块
  • 使用 use 将路径导入到作用域内后,该名称在此作用域内是私有的
    • 使用 pub use(重导出) 将该条目导入作用域,同时该条目可以被外部代码引入到它们的作用域

as 别名

as 关键字为导入的路径指定本地别名,示例:

use std::fmt::Result as fmtResult;

导入外部包(package)

步骤如下:

  • 在 Cargo.toml dependencies section 添加依赖包,包可以在 https://crates.io 查询
  • 使用 use 关键字导入条目到作用域
  • 导入本身项目:<Cargo.toml:[package]->name>::<lib.rs->public-名称>

如:

  • Cargo.toml
[dependencies]
rand = "^0.8.5"
  • 导入包
use rand::Rng;

特例

  • 导入 标准库(std) 时,不需要修改 Cargo.toml
  • 在文件中,需要使用 use 关键字将 std 中的特定条目引入到当前作用域
  • 使用 嵌套路径 在一行内引入多个条目,如:use std::{cmp:Ordering, io}
  • 一个路径是另一个路径的子路径,特例:
use std::io;
use std::io::Write;

// 等同于
use std::io::{self, Write};  // self 就是 std::io
  • 通配符 *:将路径中所有的公共条目都引入到当前作用域,如:use std::collections::*;。使用场景:如预导入模块(prelude)、测试等
    • 谨慎使用,可能因名称相同而冲突
最新评论
加载中...
Home Archives Categories Tags Statistics