LOST
LOST

Reputation: 3250

How to access a symbol defined in nested module?

I am using rustc 1.0.0 (a59de37e9 2015-05-13) (built 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;

from src, when I try to do rustc main.rs, I get

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

I also tried core::expressionType::ExpressionType and expressionType.ExpressionType

Am I missing something? Why can't I access enum from expressionType.rs

UPD1: I also tried to add

pub use self::expressionType::ExpressionType;

to mod.rs, but after that in main.rs neither core::ExpressionType, nor expressionType::ExpressionType become available.

Upvotes: 0

Views: 61

Answers (1)

Francis Gagn&#233;
Francis Gagn&#233;

Reputation: 65722

You need to write ExpressionType::Integer rather than ExpressionType.Integer (:: instead of .). In the latter case, the compiler is looking for a value, such as a variable or constant, named ExpressionType.

Upvotes: 3

Related Questions