Rust use of undeclared crate or module和maybe a missing crate?
对于新手Ruster来说,最绝望的就是crate找不到了,use of undeclared crate or module和maybe a missing crate?
use of undeclared crate or module
在workspace方式组织的项目中,遇到了
error[E0433]: failed to resolve: use of undeclared crate or module
db_schema
–> main/src/main.rs:2:9
|
2 | use db_schema::strategy::todolist;
| ^^^^^^^^^ use of undeclared crate or moduledb_schema
工程组织目录如下:
有三个package,分别是main、dao/db_schema和dao/db_queries
[workspace]
members = ["main","dao/db_schema","dao/db_queries"
]
在main的Cargo.toml文件里,已经写明db_schema和db_queries的依赖:
[dependencies]
diesel = { version = "1.4.6", features = ["mysql", "chrono", "bigdecimal"] }
dotenv = "0.15.0"
chrono = { version = "0.4.19", features = ["serde"] }
bigdecimal = "*"
db_schema = { path = "../dao/db_schema"}
db_queries = { path = "../dao/db_queries"}
并且在lib.rs中指明了
pub mod strategy;
pub mod config;
pub mod schema;
在mod.rs里:
pub mod the_masked_one;
pub mod todolist;
但是在根目录下运行cargo build时报错
use of undeclared crate or module
db_schema
根据官方文档:
https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html
入门级
https://doc.rust-lang.org/cargo/reference/workspaces.html
更特别
并且自己又写了个测试工程(只包含main和schema),正当绝望时,在workspace的Cargo.toml里,加上db_schema作为依赖,搞定。现在workspace级别的Cargo.toml:
[package]
name = "lucky"
version = "0.0.1"
edition = "2018"[workspace]
members = ["main","dao/db_schema","dao/db_queries"][[bin]]
name = "luckyapp"
path = "main/src/main.rs"[dependencies]
db_schema = { path = "./dao/db_schema"} // 这里,成功解决了问题
db_queries = { path = "./dao/db_queries"}
但是我的测试工程就不需要这两句。测试工程的Cargo.toml
[workspace]
members = ["maina","dao/schema",
]
对比后发现,问题出在workspace的Cargo.toml上。如果在这个Cargo.toml里加上[package]
和[[bin]]
标签([package]
编译提示必须要有[[bin]]
),就必须加上[dependencies]
标签,并且把main.rs用到的所有依赖写在这里,相当于main.rs自己所在的package被workspace级别的Cargo.toml override了。即使main.rs所在package的Cargo.toml的dependency完美,也不行。
maybe a missing crate?
error[E0432]: unresolved import
crate::schema
–> dao\db_schema\src\strategy\todolist.rs:16:12
|
16 | use crate::schema::todo_list;
| ^^^^^^ maybe a missing crateschema
?
原因,在db_schema这个package的lib.rs里,我虽然写上了所有lib.rs的晚辈,但是唯独把它姐妹schema.rs漏掉了,所以加上:
pub mod strategy;
pub mod config;
pub mod schema; // 一开始漏掉了这句
其他的情况,见解答:
https://stackoverflow.com/questions/61849216/including-an-internal-module-produces-maybe-a-missing-crate-module2
总结就是,外部要使用的模块需要声明,在每个模块目录的mod.rs里,lib.rs对于package的作用就像mod.rs。
.
├── config
│ └── mod.rs
├── lib.rs
├── schema.rs
└── strategy├── mod.rs└── todolist.rs2 directories, 5 files
$ cat config/mod.rs
$ cat strategy/mod.rs
pub mod todolist;
$ cat lib.rs
pub mod strategy; // 目录
pub mod config; // 目录
pub mod schema; // schema.rs
Rust use of undeclared crate or module和maybe a missing crate?相关推荐
- vue启动报错!Module build failed: Error: Missing binding D:\WorkSpace\vue\OfficeSuite\OfficeFrontend\node
报错信息如下: This usually happens because your environment has changed since running `npm install`. Run ` ...
- Module build failed: Error: Missing binding
npm run dev启动前端工程以后终端出现超长报错,如下: > shop@2.4.0 dev > vue-cli-service serveINFO Starting developm ...
- Vue 项目运行失败 Module build failed: Error: Missing binding
思路 通过报错信息,可以看出核心问题在于,依赖文件里找不到Sass文件,这个提示我们要重新安装Sass 1. 通过cd切换到当前项目的依赖文件夹下,也就是node_modules文件,然后运行命令安装 ...
- Rust之包,箱和模块管理(四):用use关键字引用其他包
开发环境 Windows 10 Rust 1.63.0 VS Code 1.70.2 项目工程 这里继续沿用上次工程rust-demo 用use关键字将路径带入范围 不得不写出调用函数的路径可能会感到 ...
- Rust 1.31正式发布,首次引入Rust 2018新功能
Rust 1.31是第一个实现了Rust 2018独有新功能并且不保证与现有代码库兼容的版本.Rust 2018相关工作正在进行中,而Rust 1.31只是整个三年开发周期的开始,这个开发周期将对这门 ...
- Rust 入坑指南 | CSDN 博文精选
作者 | Jackyzhe 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 随着我们的坑越来越多,越来越大,我们必须要对各种坑进行管理了.Rust为我们提供了一套坑务管理系统,方便大家有 ...
- Rust 学习3, 枚举,集合
Option枚举 Option定义于标准库中,并且会与导入(我们不需要主动引入), 描述了某个值可能存在(某种类型)或不存在的情况 // 4月16日每日一题 //给定一个整数 n ,返回 可表示为两个 ...
- rust php 扩展,在PHP程序中使用Rust扩展的方法_PHP
C或PHP中的Rust 我的基本出发点就是写一些可以编译的Rust代码到一个库里面,并写为它一些C的头文件,在C中为被调用的PHP做一个拓展.虽然并不是很简单,但是很有趣. Rust FFI(fore ...
- rust php 扩展,在PHP程序中使用Rust扩展的方法_php技巧
C或PHP中的Rust 我的基本出发点就是写一些可以编译的Rust代码到一个库里面,并写为它一些C的头文件,在C中为被调用的PHP做一个拓展.虽然并不是很简单,但是很有趣. Rust FFI(fore ...
- rust放置木箱转向_rust笔记五 - cyper的个人空间 - OSCHINA - 中文开源技术交流社区...
http://doc.rust-lang.org/guide.html#crates-and-modules 15 crates和modules 一个木箱是一个独立的编译单元,可以包含一个module ...
最新文章
- video标签支持获取rtsp流么_Flask教程(二十二)在浏览器中播放rtsp实时流
- 清除messages
- 学python需要什么文化基础-和尧名大叔一起从0开始学Python编程-循环
- 关于equals和hashcode问题
- C#如何判断质数(转)
- 解决数据库Can't connect to MySQL server on 'localhost' (10061)的问题
- 查找表_leetcode454
- Alibaba Fastjson 入门详细教程
- 半导体PN结的工作原理
- MIMO与Beamforming技术学习
- 权重股启动意味着什么
- Python爬虫系列之全国邮编区号爬取
- RSE2021/云检测:Automatic cloud and cloud shadow detection in tropical areas用于PlanetScope热带地区自动云和云阴影检测
- CSS属性vertical-align详解(CSS之五)
- 【17 提高 1】 给
- 移动智能与终端安全防护
- 使用局域网IP地址作为小程序的测试IP
- 在家无聊就重装个系统吧 三分钟教你重装安装系统
- 英语常用的62个英语句型,学英语须掌握
- C#实现物体尺寸测量(利用坐标转换)
热门文章
- matlab处理采集的声音数据
- docker容器满了,如何清理内存
- 不限专业和工作年限就能报考的证书有哪些?
- Meatycake,51nod2117,树状数组
- word自动更正关闭_如何在OS X中关闭自动更正文本替换
- 重磅!中国首家互联网银行联手腾讯、华为各大APP,最高5万额度,疯狂提额100亿!!!...
- UCF动作识别的数据集及处理(pytorch)
- marked转换html失败,JavaScript使用marked.js在线Markdown转HTML
- 彻底解决unable to find valid certification path to requested target
- 赵小楼《天道》《遥远的救世主》深度解析(29)优秀的传统文化和弱势思想观念的转变