我正在使用rustc 1.0.0(a59de37e9 2015-05-13)(建于2015-05-14)
src
├── main.rs
└── core
├── mod.rs
└── expressionType.rs
main.rs:
mod core;
use core::expressionType;
fn main() {
let t = expressionType::ExpressionType.Integer;
println!("Hello, world!")
}
expressionType.rs:
pub enum ExpressionType {
Integer,
List(Box<ExpressionType>),
Function(Box<ExpressionType>, Box<ExpressionType>)
}
mod.rs:
pub mod expressionType;
从src开始,当我尝试做rustc main.rs时,我得到了
main.rs:5:13: 5:43 error: unresolved name `expressionType::ExpressionType`
main.rs:5 let t = expressionType::ExpressionType.Integer;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: aborting due to previous error
我还尝试了core :: expressionType :: ExpressionType和expressionType.ExpressionType
我错过了什么吗?为什么我不能从expressionType.rs
访问枚举UPD1:我也尝试添加
pub use self::expressionType::ExpressionType;
到mod.rs,但在main.rs之后,core :: ExpressionType和expressionType :: ExpressionType都不可用。
答案 0 :(得分:3)
您需要撰写ExpressionType::Integer
而不是ExpressionType.Integer
(::
而不是.
)。在后一种情况下,编译器正在查找名为ExpressionType
的值,例如变量或常量。