You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust项目名称含连字符(-)导入本crate报E0433错误如何解决?

解决方案

你的问题和项目名含连字符无关,核心原因是同一crate内引用自身模块不需要使用包名前缀,可按以下优先级选择方案:

方案1:使用crate::绝对路径(最推荐)

Rust 2018 edition及以上版本,在本项目内引用根路径下的模块,直接以crate::作为路径开头即可,完全不受包名、文件夹名影响:

use crate::schema::posts::dsl::*;

方案2:使用相对路径

根据你当前文件src/biz/music/music.rs的位置,向上回溯到src根目录即可引用schema模块:

use super::super::super::schema::posts::dsl::*;

该方式路径层级随文件位置变化,维护成本更高,不推荐。

方案3:强制启用包名前缀导入

如果确实需要沿用reddwarf_music::的导入格式,在项目根入口文件(二进制项目为src/main.rs,库项目为src/lib.rs)顶部添加如下声明即可:

extern crate self as reddwarf_music;

额外检查项

请先确认你已经在根入口文件中公开声明了schema模块,否则任何路径都无法正常导入:

// 加在src/main.rs或src/lib.rs的顶部
pub mod schema;

补充说明:Cargo自动把包名连字符转下划线的规则仅适用于导入外部依赖crate的场景,本项目内导入自身模块不受该规则约束,你的Cargo.toml中name字段已经配置为下划线格式,本身也没有连字符相关的配置问题。

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:06:02