【问题标题】:use of undeclared crate or module, "use crate_name::schema::posts" doesn't always work使用未声明的 crate 或模块,“使用 crate_name::schema::posts”并不总是有效
【发布时间】:2021-04-23 12:22:31
【问题描述】:

我正在尝试通过将 Rust 与 actix-webdiesel 一起使用来学习 Rust。

当我尝试使用 crate 名称导入/使用架构时,它仅适用于 example.rs 文件,但不适用于 post.rs 文件。这两个文件都嵌套在自己的文件夹中,我使用的命令如下:

use web_project_core::schema::posts;

当我改用这个其他命令时,它在 post.rs 中有效,但在 example.rs 中无效:

use super::super::schema::posts;

我错过了什么?

// Cargo.toml
[lib]
name = "web_project_core"
path = "src/lib.rs"

[[bin]]
name = "main"
path = "src/main.rs"
// main.rs

use actix_web::{App, HttpServer};

mod handlers;
// lib.rs
#[macro_use]
extern crate diesel;
extern crate dotenv;

use diesel::prelude::*;
use diesel::pg::PgConnection;
use dotenv::dotenv;
use std::env;

pub mod schema;
pub mod modelz;
// post.rs

use serde::{Serialize, Deserialize};
use nanoid::generate;

use super::super::schema::posts;        // <-- it works
// use web_project_core::schema::posts; // <-- it doesn't work
// example.rs

use actix_web::{get, web, post, HttpResponse, Responder};
use diesel::prelude::*;

use web_project_core::establish_connection;
use web_project_core::schema::posts;            // <-- it works
// use super::super::schema::posts;             // <-- it doesn't work
use web_project_core::modelz::post::*;

项目结构:

谢谢

【问题讨论】:

    标签: rust actix-web


    【解决方案1】:

    example.rspost.rs 之间的区别在于post.rs 在库包web_project_core 中,而example.rs 在二进制包main 中。 路径 web_project_core::schema::postspost.rs 中不可用,因为 web_project_core 是当前 crate,而不是依赖项。 在引用当前 crate 时,您可以使用 crate::schema::posts 而不是 web_project_core::schema::posts。二进制文件隐式依赖于库,因为它们在同一个包中,使得路径 web_project_core::schema::postsexample.rs 中可用

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 2021-01-14
      • 2017-10-30
      • 2015-08-08
      • 2014-06-19
      • 2021-01-25
      • 2019-11-13
      • 1970-01-01
      • 2015-11-22
      相关资源
      最近更新 更多