Rust之包,箱和模块管理(三):引用模块树中项目的路径

开发环境

  • Windows 10
  • Rust 1.62.1

 

  •  VS Code 1.69.2 

    项目工程

这里继续沿用上次工程rust-demo

引用模块树中项目的路径 

为了显示在模块树中何处可以找到一个项目,我们使用了一个路径,就像我们在导航文件系统时使用路径一样。如果我们想调用一个函数,我们需要知道它的路径。

路径可以有两种形式:

  • 绝对路径从箱crate根开始,使用箱crate名称(用于外部箱crate中的代码)或文字箱crate(用于当前箱crate中的代码)。
  • 相对路径从当前模块开始,使用selfsuper或当前模块中的标识符。

绝对路径和相对路径后面都跟有一个或多个由双冒号(::)分隔的标识符。

让我们回到之前的例子。我们如何调用add_to_waitlist函数?这就跟问,add_to_waitlist函数的路径是什么一样?下例中包含之前的例子,删除了一些模块和功能。我们将展示两种方法来从在crate根中定义的新函数eat_at_restaurant调用add_to_waitlist函数。eat_at_restaurant函数是我们的库crate的公共API的一部分,所以我们用pub关键字标记它。在“使用pub关键字公开路径”一节中,我们将更详细地讨论pub。注意,这个例子还不能编译;我们稍后会解释原因。

mod front_of_house {
    mod hosting {
        fn add_to_waitlist() {}
    }
}

pub fn eat_at_restaurant() {
    // 使用crate绝对和相对路径调用
    // Absolute path
    crate::front_of_house::hosting::add_to_waitlist();   // crate开始绝对路径     

    // Relative path
    front_of_house::hosting::add_to_waitlist();
}

我们第一次在eat_at_restaurant中调用add_to_waitlist函数时,使用的是绝对路径。add_to_waitlist函数与eat_at_restaurant在同一个crate中定义,这意味着我们可以使用crate关键字开始一个绝对路径。

crate之后,我们包括每个连续的模块,直到我们添加到等待列表。您可以想象一个具有相同结构的文件系统,我们将指定路径/front _ of _ house/hosting/add_to_waitlist来运行add _ to _ wait list程序;使用板条箱名称从板条箱根目录开始就像在shell中使用/从文件系统根目录开始一样。

第二次在eat_at_restaurant中调用add_to_waitlist时,我们使用的是相对路径。路径以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值