繁体   English   中英

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

[英]How to reference a constant in a test in the same lib.rs file in Rust?

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

const GREEN: LedColor = LedColor(0, 255, 0);

在同一个 lib.rs 文件中,我也有尝试使用 GREEN 的测试,如下所示:

#[cfg(test)]
mod tests {
    use {OFF, YELLOW, RED, GREEN};
    #[test]
    fn some_test() {//...}

但是运行 cargo test 会出现错误,例如:

路径中没有绿色

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

您需要使用super关键字来引用父模块。

模块tests实际上是crate::tests ,这意味着GREEN你写它的方式真的是crate::tests::GREEN 那不存在,因为GREEN在父模块中定义。 所以你需要:

#[cfg(test)]
mod tests {
    use super::{OFF, YELLOW, RED, GREEN};
}

这些被认为是私有的,因此正常use crate::{names}将不起作用。

您可以使用use super::**使它们全部可用,作为简写),它从父模块引入私有名称。 (虽然这不是我能找到的记录)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM