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

Rust 如何访问嵌套模块中定义的符号?,rust,Rust,我使用的是rustc 1.0.0(a59de37e9 2015-05-13)(构建于2015-05-14) src ├── 梅因 └── 核心 ├── 国防部 └── expressionType.rs main.rs: mod core; use core::expressionType; fn main() { let t = expressionType::ExpressionType.Integer; println!("Hello, world!") } expr

我使用的是rustc 1.0.0(a59de37e9 2015-05-13)(构建于2015-05-14)

src
├── 梅因
└── 核心
├── 国防部
└── 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>)
}
从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中,核心::ExpressionType和ExpressionType::ExpressionType都不可用。

您需要编写
ExpressionType::Integer
,而不是
ExpressionType.Integer
而不是
)。在后一种情况下,编译器正在查找名为
ExpressionType

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

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

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

的值,例如变量或常量,按照惯例,这不是Rust中的工作方式<代码>表达式类型
通常不应该放在它自己的模块中,它应该直接放在
核心
模块中。然后
core::ExpressionType::Integer
,&c。在与此相关的情况下,它可能会放在自己的模块中,但即使这样,它通常也只能直接在
核心下导出(
pub enum ExpressionType
mod expression\u type;pub use expression\u type::ExpressionType;
)。还要注意的是,模块名是按约定的大小写的<代码>表达式类型
通常不应该放在它自己的模块中,它应该直接放在
核心
模块中。然后
core::ExpressionType::Integer
,&c。在与此相关的情况下,它可能会放在自己的模块中,但即使这样,它通常也只能直接在
核心下导出(
pub enum ExpressionType
mod expression\u type;pub use expression\u type::ExpressionType;
)。还要注意的是,模块名是按约定的大小写的<代码>表达式类型
通常不应该放在它自己的模块中,它应该直接放在
核心
模块中。然后
core::ExpressionType::Integer
,&c。在与此相关的情况下,它可能会放在自己的模块中,但即使这样,它通常也只能直接在
核心下导出(
pub enum ExpressionType
mod expression\u type;pub use expression\u type::ExpressionType;
)。还要注意的是,模块名是按约定的大小写的<代码>表达式类型
通常不应该放在它自己的模块中,它应该直接放在
核心
模块中。然后
core::ExpressionType::Integer
,&c。在与此相关的情况下,它可能会放在自己的模块中,但即使这样,它通常也只能直接在
核心下导出(
pub enum ExpressionType
mod expression\u type;pub use expression\u type::ExpressionType;
)。还要注意的是,模块名是按惯例大小写的。天哪,这个错误描述非常混乱。@LOST:太糟糕了;我认为它的技术原因大致是它只在值空间中查找,而
ExpressionType
在类型/模块空间中,所以它根本看不到它。@ChrisMorgan:你知道关于这个问题的任何错误报告吗?我知道在改进错误消息方面已经出现了一系列错误(例如,由于某些通用参数约束未得到满足而未考虑某个方法),但我不知道这一特定的“错误空间”问题的任何错误。@MatthieuM.:我不知道任何错误,但我根本没有搜索过。(还请记住,我记不清我所指概念的行话,我使用的术语可能不正确。)@ChrisMorgan:wrt行话:我也有同样的问题:/Gosh,这个错误描述非常混乱。@LOST:相当糟糕;我认为它的技术原因大致是它只在值空间中查找,而
ExpressionType
在类型/模块空间中,所以它根本看不到它。@ChrisMorgan:你知道关于这个问题的任何错误报告吗?我知道在改进错误消息方面已经出现了一系列错误(例如,由于某些通用参数约束未得到满足而未考虑某个方法),但我不知道这一特定的“错误空间”问题的任何错误。@MatthieuM.:我不知道任何错误,但我根本没有搜索过。(还请记住,我记不清我所指概念的行话,我使用的术语可能不正确。)@ChrisMorgan:wrt行话:我也有同样的问题:/Gosh,这个错误描述非常混乱。@LOST:相当糟糕;我认为它的技术原因大致上是它只在值空间中查找,其中
ExpressionType
在类型/模块空间中,所以它是这样做的
pub use self::expressionType::ExpressionType;