Rust 出口板条箱,但;使用「;抛出编译错误
在货物方面,我有:Rust 出口板条箱,但;使用「;抛出编译错误,rust,rust-cargo,Rust,Rust Cargo,在货物方面,我有: postgres = "0.11.7" 在子模块*.rs中 extern crate postgres; use postgres::{Connection, Error, FromSql, SslMode}; use postgres::Result as PgResult; 以及编译错误: error: unresolved import `postgres::Connection`. Did you mean `self::postgres`? [E0432] u
postgres = "0.11.7"
在子模块*.rs中
extern crate postgres;
use postgres::{Connection, Error, FromSql, SslMode};
use postgres::Result as PgResult;
以及编译错误:
error: unresolved import `postgres::Connection`. Did you mean `self::postgres`? [E0432]
unresolved import `postgres::Error`. Did you mean `self::postgres`? [E0432]
error: unresolved import `postgres::SslMode`. Did you mean `self::postgres`? [E0432]
和类似的指令。虽然可以将
外部板条箱
指令放入任何模块,但将其放入板条箱根目录(通常是lib.rs
或main.rs
)更为习惯,也更为方便。然后您的use
语句将像现在一样工作
出现此问题的原因是您已将外部板条箱postgres
放置到根板条箱的一个子模块:
mod submodule {
extern crate postgres;
use postgres::...;
}
这意味着
postgres
模块的完整路径将是submodule::postgres
,而不仅仅是postgres
(请记住,use
指令中的路径默认为绝对路径),因此您应该使用use submodule::postgres::which代码>或使用self::postgres::whatever
(后一种形式是use
语句中的相对路径示例)。但是,正如我之前所说,这不是惯用的,应该避免。虽然可以将extern-crater
指令放在任何模块上,但将其放在板条箱根目录下(通常是lib.rs
或main.rs
)更惯用,也更方便。然后您的use
语句将像现在一样工作
出现此问题的原因是您已将外部板条箱postgres
放置到根板条箱的一个子模块:
mod submodule {
extern crate postgres;
use postgres::...;
}
这意味着postgres
模块的完整路径将是submodule::postgres
,而不仅仅是postgres
(请记住,use
指令中的路径默认为绝对路径),因此您应该使用use submodule::postgres::which代码>或使用self::postgres::whatever
(后一种形式是use
语句中的相对路径示例)。然而,正如我之前所说,这不是惯用的,应该避免代码>在lib.rs
或main.rs
中?您是否放置了外部板条箱postgres在lib.rs
或main.rs
中的code>?这里需要注意的一点是use
与root
相关,而其他路径与self
相关。这对新手来说是非常混乱的。这里的一个警告是使用
是相对于根
,而其他路径是相对于自身
。这对新来者来说是非常令人困惑的。