【发布时间】:2021-10-25 22:44:14
【问题描述】:
我正在尝试在两个文件之间共享一个结构,但出现错误。
我有以下文件夹结构:
src/
Models/
Login.rs
Routes/
LoginRoute.rs
Services/
LoginService.rs
main.rs
在Login.rs 我有:
#[derive(Serialize, Deserialize, Debug)]
pub struct UserLoginResponse {
id: i32,
username: String,
token: String
}
在LoginRoute.rs 我有:
#[path = "../Models/Login.rs"]
pub mod Login;
#[path = "../Services/LoginService.rs"]
pub mod LoginService;
#[post("/login", format = "application/json", data = "<user>")]
pub async fn login(user: String) -> Json<Login::UserLoginResponse> {
if let Ok(sk) = LoginService::callAuthenticate(user).await {
return sk
......
在LoginService.rs 我有:
#[path = "../Models/Login.rs"]
pub mod Login;
pub async fn callAuthenticate(user: String)-> Result<Json<Login::UserLoginResponse>, Error> {
...
let userLoginResponse :Login::UserLoginResponse = Login::UserLoginResponse::new(1, "admin".to_string(), api_reponse.return_result);
Ok(Json(userLoginResponse))
}
我在return sk 行的LoginRoute.rs 中遇到错误:
expected struct 'LoginRoute::Login::UserLoginResponse', found struct 'LoginService::Login:UserLoginResponse'
【问题讨论】:
-
您为什么选择在您的
mod语句中使用#[path ...? -
因为它们不在同一个文件夹中
-
如果我可以问,您是从哪里了解到
#[path]属性的?如果这是在 Stack Overflow 上,似乎有些人可能会对添加一个不鼓励使用它的友好注释感兴趣。 -
@Jason lol 不太确定我在哪里学到的,可能是在其他地方,我现在知道得更好了 :)
标签: rust rust-rocket