我试图在同一文件的测试中使用枚举,但它不起作用。这是一个最小的例子:
#[derive(PartialEq)]
enum Token {
Assign,
Plus,
}
// This function works, so I can access Token here
fn toto() -> Token {
Token::Assign
}
#[cfg(test)]
mod tests {
#[test]
fn next_token() {
let inputs = "=+";
let expected_tokens = [Token::Assign, Token::Plus];
// The error I get: ^^^^^ use of undeclared type or module `Token`
}
}
我希望这个示例能够工作,但事实并非如此,并且对于 expected_token
的两个标记,我得到“使用未声明的类型或模块 Token
”。
最佳答案
我在 mod 测试
中缺少 use super::*;
,它从外部作用域(此处为文件)导入名称。这是更正后的最小示例:
#[derive(PartialEq)]
enum Token {
Assign,
Plus,
}
fn toto() -> Token {
Token::Assign
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn next_token() {
let inputs = "=+";
let expected_tokens = [Token::Assign, Token::Plus];
}
}
关于Rust - 不能在测试中使用枚举/不能在子模块上使用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63714483/