闽公网安备 35020302035485号
mod front_of_house {
pub mod hosting {
pub fn add_to_waitlist() {}
fn some_function();
}
}
use crate::front_of_house::hosting;
pub fn eat_at_restaurant() {
hosting::add_to_waitlist();
}
在上面的示例代码中,虽然我们引入了hosting模块,但是仍然不能调用 some_function 这个私有函数。也可以使用相对路径的方式引入模块,如下示例代码use front_of_house::hosting;
在引入代码的时候,我们通常引用到父级模块即可,再通过父级模块调用函数,而不是引入到具体的函数,这样我们就能容易的区分函数是外部引入的,还是本模块就存在的。
use std::collection::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert(1, 2);
}
2.2 同名条目use std::fmt;
use std::io;
fn f1() -> fmt::Result {
// 函数内容,此处省略
}
fn f2() -> io::Result {
// 函数内容,此处省略
}
除此,我们还可以使用as关键字解决该问题,as 关键字可以为引入的路径指定本地的别名,如下示例代码use std::fmt::Result;
use std::io::Result as IOResult;
fn f1() -> Result {
// 函数内容省略
}
fn f2() -> IOResult {
// 省略函数体
}
2.3 使用pub use重新导出名称mod front_of_house {
pub mod hosting {
pub fn add_to_waitlist() {}
fn some_function();
}
}
// 堆代码 duidaima.com
pub use crate::front_of_house::hosting;
pub use将条目引入到作用域内,同时该条目可以被外部代码引入到它们的作用域内。
Cargo.toml添加依赖的包(package)的声明,当我们运行cargo build时,cargo将从crate.io添加对应包到本地,下载好之后,使用use关键字将特定条目引入到作用域。
[source.crates-io] replace-with = 'tuna' [source.tuna] registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
以上的配置指定了当cargo去拉去包依赖的时候,将使用清华镜像站。标准库std也被当作外部包,不需要修改Cargo.toml来包含std。不过在需要使用具体条目的时候,还是需要使用use关键字将std中特定的条目引入到当前作用域。
use std::cmp::Ordering; use std::io;可以改为
std std::{
cmp::Ordering,
io
}
如use std::io; use std::io::Write;可以改为
use std::io::{
self,
Write
}
*代表通配符号,我们还可以使用*把路径中所有的公共条目都引入到当前的作用域。如下示例代码use std::collections::*;但这种引入方式需要谨慎使用,适合以下应用场景