如何访问嵌套模块中定义的符号?

时间:2015-07-01 02:50:38

标签: rust

我正在使用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都不可用。

1 个答案:

答案 0 :(得分:3)

您需要撰写ExpressionType::Integer而不是ExpressionType.Integer::而不是.)。在后一种情况下,编译器正在查找名为ExpressionType的值,例如变量或常量。