Rust中如何在代码中引用sibling module

Rust代码中如何引用同级的其他module

背景

在一个rust源码工程中,需要在某一个crate中编写同一级别的module,crate结构大致如下:

root@dragonfly:/home/RustProject/vmm# tree .
.
├── Cargo.lock
├── Cargo.toml
└── src
    ├── lib.rs
    ├── vmm_config
    │   ├── boot.rs
    │   ├── driver.rs
    │   ├── info.rs
    │   ├── mod.rs
    └── vm.rs

其中,vm.rsvm_config是同一等级的module,并且在lib.rs中使用pub mod xxx来重载两个module。现在需要在vm.rs中引入vmm_config中的各子module,引用方式如下:

root@dragonfly:/home/RustProjects/vmm/src# cat vm.rs

use vmm_config::driver::*;
use vmm_config::info::*;
use vmm_config::boot::*;
...

但会遇到如下错误:

error[E0433]: failed to resolve: use of undeclared type or module `vmm_config`
...
error[E0432]: unresolved imports `vmm_config::boot::BootConfig`, `vmm_config::boot::BootSourceConfig`, 
...

经过千辛万苦终于找到了解决方案:
方案一:(使用super::vmm_config::xxx)

root@dragonfly:/home/RustProjects/vmm/src# cat vm.rs

use super::vmm_config::driver::*;
use super::vmm_config::info::*;
use super::vmm_config::boot::*;
...

方案二:(使用use crate::vmm_config)

root@dragonfly:/home/RustProjects/vmm/src# cat vm.rs
use crate::vmm_config;

use vmm_config::driver::*;
use vmm_config::info::*;
use vmm_config::boot::*;
...

Reference

How do I import from a sibling module?.
通过例子学Rust

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值