Rust - 不能在测试中使用枚举/不能在子模块上使用类型

标签 rust

我试图在同一文件的测试中使用枚举,但它不起作用。这是一个最小的例子:

#[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/

相关文章:

rust - 为什么将移动值的成员分配给时编译不会失败?

rust - 解析 Rust 生成的 LLVM-IR 时无效字段 'subprograms'

rust - 如何解决预期的 `:` ,发现关键字 `self` ?

types - Impl Add 为类型别名元组 (f64, f64)

rust - 整数类型的Rust特征范围

rust - 如何找出函数(引用)的类型签名?

rust - 如何使用带有异步的指示器显示总计数器栏?

rust - 如何在不重新分配的情况下将具有长度的 *const u8 转换为 &str?

rust - 为什么使用带有 into 的涡轮鱼会给出 "wrong number of type arguments"?

Rust:Float::pi 的 "the type of this value must be known in this context"错误