如何在Rust中的同一lib.rs文件中的测试中引用常量?

如何在Rust中的同一lib.rs文件中的测试中引用常量?,rust,Rust,我在lib.rs中定义了一个常量,如下所示: #[cfg(test)] mod tests { use {OFF, YELLOW, RED, GREEN}; #[test] fn some_test() {//...} const GREEN:LedColor=LedColor(0,255,0) 在同一个lib.rs文件中,我还进行了尝试使用绿色的测试,如下所示: #[cfg(test)] mod tests { use {OFF, YELLOW, RED, G

我在lib.rs中定义了一个常量,如下所示:

#[cfg(test)]
mod tests {
    use {OFF, YELLOW, RED, GREEN};
    #[test]
    fn some_test() {//...}
const GREEN:LedColor=LedColor(0,255,0)

在同一个lib.rs文件中,我还进行了尝试使用绿色的测试,如下所示:

#[cfg(test)]
mod tests {
    use {OFF, YELLOW, RED, GREEN};
    #[test]
    fn some_test() {//...}
但运行货物测试会出现如下错误:

小路上没有绿色

如何在同一文件中的测试中引用常量绿色?

您需要使用来引用父模块

模块
tests
实际上是
cratet::tests
,这意味着
GREEN
您在那里编写它的方式实际上是
cratet::tests::GREEN
。这不存在,因为在父模块中定义了
绿色
。因此,您需要:

#[cfg(测试)]
模试验{
使用super:{OFF,YELLOW,RED,GREEN};
}

这些被认为是私有的,因此正常的
使用板条箱:{names}
将不起作用

您可以使用
use super::*
*
使它们都可用,作为一种简写)从父模块引入私有名称。(尽管从我所能找到的资料来看,这并没有记录在案)

如果您不介意将它们公开,您可以添加
pub
,然后使用
use claret::{names}

,请下次包含一个真实的