如何解决为什么main.rs可以包含来自同一目录的模块,而其他文件/模块却不能?
我具有以下目录结构:
.
├── Cargo.lock
├── Cargo.toml
├── src
│ ├── main.rs
│ ├── metrics.rs
│ ├── statistics.rs
│ └── time.rs
main.rs
use std::vec::Vec;
...
mod metrics;
mod statistics;
mod time;
...
pub async fn main() {
let stats = statistics::Statistics{
...
};
let t = time::get_now();
...
}
time.rs
use std::time::{SystemTime,UNIX_EPOCH};
pub fn get_now() -> u64 {
return ... as u64;
}
statistics.rs
...
pub struct Statistics {
pub metrics: u64,...
}
我很困惑,为什么我可以在time.rs
内使用statistics.rs
和main.rs
中定义的结构和函数,而不能在其他文件中使用。所以我的问题是:
如何在time::get_now()
文件中使用statistics.rs
?
仅添加mod time;
,然后将其用作time::get_now()
即可产生:
error[E0583]: file not found for module `time`
--> src/statistics.rs:5:1
|
5 | mod time;
| ^^^^^^^^^
|
= help: to create the module `time`,create file "src/statistics/time.rs"
编辑
我发现我可以跳过导入(通过mod time
),而仅将函数用作crate::time::get_now()
,但我想有更好的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。