使用未声明的板条箱或模块,"use crate_name::schema::posts" 并不总是有效
use of undeclared crate or module, "use crate_name::schema::posts" doesn't always work
我正在尝试通过 actix-web
和 diesel
来学习 Rust。
当我尝试使用包装箱名称 import/use 模式时,它仅在 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::*;
项目结构:
谢谢
example.rs
和 post.rs
的区别在于 post.rs
在库包 web_project_core
而 example.rs
在二进制包 main
.
路径 web_project_core::schema::posts
在 post.rs
中不可用,因为 web_project_core
是当前包,而不是依赖项。
在引用当前 crate 时,您可以使用 crate::schema::posts
而不是 web_project_core::schema::posts
。二进制文件隐式依赖于库,因为它们在同一个包中,使得路径 web_project_core::schema::posts
在 example.rs
中可用
我正在尝试通过 actix-web
和 diesel
来学习 Rust。
当我尝试使用包装箱名称 import/use 模式时,它仅在 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::*;
项目结构:
谢谢
example.rs
和 post.rs
的区别在于 post.rs
在库包 web_project_core
而 example.rs
在二进制包 main
.
路径 web_project_core::schema::posts
在 post.rs
中不可用,因为 web_project_core
是当前包,而不是依赖项。
在引用当前 crate 时,您可以使用 crate::schema::posts
而不是 web_project_core::schema::posts
。二进制文件隐式依赖于库,因为它们在同一个包中,使得路径 web_project_core::schema::posts
在 example.rs