Rust unresolved import `crate::xxx` 报错解决

ops/2025/2/8 21:53:04/

问题阐述

该问题出现在我使用actix编写的crud后端api中,我的后端结构如下:

D:.
|   handle_err.rs
|   lib.rs
|   main.rs
|
+---application
|       mod.rs
|       user_service.rs
|
+---domain
|       dto.rs
|       mod.rs
|       user.rs
|
+---infrastructure
|       mod.rs
|       repository.rs
|
\---interfacemod.rsuser_controller.rs

我希望在 `user_service.rs` 和 `repository.rs` 中使用我的自定义error结构体对象,我在 `application`目录下和 `infrastructure` 目录下的 mod.rs 中都已经导出了对应 .rs 文件:

rust">pub mod repository;
rust">pub mod user_service;

并且在lib.rs目录下也已经导出了对应包: 

rust">pub mod infrastructure;
pub mod domain;
pub mod application;
pub mod handle_err;

但是在 `repository.rs` 文件中的引入

rust">use crate::handle_err::ServiceError;

却报错:

unresolved import `crate::handle_err`
unresolved importrustcClick for full compiler diagnostic

解决方案

在 main.rs 中 mod base即可,即在man.rs 中添加 mod handle_err;

rust">use actix_web::{web, App, HttpServer};
use dotenv::dotenv;
use mysql::Pool;
use std::env;
use std::sync::Arc;mod domain;
mod application;
mod infrastructure;
mod interface;
mod handle_err;use application::user_service::UserService;
use infrastructure::repository::UserRepository;
use interface::user_controller::configuration;#[actix_web::main]
async fn main() -> std::io::Result<()> {dotenv().ok();let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");let pool = Pool::new(database_url).expect("Failed to create database pool");let user_repository = UserRepository::new(pool);let user_service = Arc::new(UserService::new(user_repository));HttpServer::new(move || {App::new().app_data(web::Data::from(user_service.clone())).configure(configuration) // 调用配置函数注册路由}).bind(("127.0.0.1", 8081))?.run().await
}

参考资料

Rust 使用 use::create:: 不能引用顶级目录的模块?? - Rust语言中文社区


http://www.ppmy.cn/ops/156816.html

相关文章

25/2/6 <机器人基础> 运动学中各连杆的变换矩阵求法

变换矩阵 机器人通常包含多个关节和连杆&#xff0c;每个关节和连杆都有自己的局部坐标系。变换矩阵能够将一个点或向量从一个坐标系转换到另一个坐标系&#xff0c;从而实现对机器人各个部件位置和姿态的统一描述 变换矩阵能够将复杂的运动分解为旋转和平移的组合。通过矩阵乘…

【CPP】C++后端开发面试:深入理解编程中的锁机制

文章目录 1. 互斥锁&#xff08;Mutex&#xff09;1.1 基本概念1.2 特点1.3 应用场景1.4 示例代码 2. 递归锁&#xff08;Recursive Mutex&#xff09;2.1 基本概念2.2 特点2.3 应用场景2.4 示例代码 3. 读写锁&#xff08;Read-Write Lock&#xff09;3.1 基本概念3.2 特点3.3…

设计模式---观察者模式

设计模式—观察者模式 定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 主要解决的问题&#xff1a;一个对象状态改变给其他对象通知的问题&#xff0c;而且要考虑到易用和低耦合&#xff0c;…

设计模式学习(四)

行为模式 观察者模式&#xff08;Observer Pattern&#xff09; 定义 它定义了对象之间的一对多依赖关系。当一个对象&#xff08;被观察者&#xff09;的状态发生变化时&#xff0c;所有依赖它的对象&#xff08;观察者&#xff09;都会收到通知并自动更新。 观察者模式的…

使用PHPStudy搭建Cloudreve网盘服务

文章目录 1、前言2、本地网站搭建 2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布 3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&…

超详细UE4(虚幻4)第一人称射击(FPS)游戏制作教程

超详细UE4(虚幻4)第一人称射击(FPS)游戏制作教程 引言 在游戏开发领域,第一人称射击(FPS)游戏一直是最受欢迎的类型之一。从经典的《反恐精英》(CS)到现代的《使命召唤》(Call of Duty),FPS游戏凭借其紧张刺激的游戏体验和高度沉浸感,吸引了无数玩家。如果你是一…

SQL带外注入

SQL 带外注入&#xff08;Out-of-Band SQL Injection, OOB SQLi&#xff09; 是 SQL 注入的一种特殊类型&#xff0c;主要用于以下情况&#xff1a; 数据库没有直接返回错误信息&#xff08;比如被防火墙拦截了&#xff09;。无法使用常规注入手法&#xff08;如 UNION、错误信…

git:恢复纯版本库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…