gpt4 book ai didi

rust - 为什么在不同的 mod 中找不到我的 const 变量

转载 作者:行者123 更新时间:2023-11-29 08:28:30 25 4
gpt4 key购买 nike

我在 main.rs 中定义了一个 const 变量,并想在不同的文件中使用它。

src/main.rs中,我定义了这样一个const,不管有没有pub,都没有用到:

const CONFIG_GROUP: &str = "core.hydra.io";
pub const CONFIG_VERSION: &str = "v1alpha1";
pub const COMPONENT_CRD: &str = "componentschematics";

fn main() {
...
}

在另一个文件 src/abc.rs 中,我想使用这个常量。

无论是否使用 ::,它都不起作用。

println!("{}", COMPONENT_CRD); 
let component_resource = RawApi::customResource(COMPONENT_CRD)
.within(top_ns.as_str())
.group(::CONFIG_GROUP)
.version(::CONFIG_VERSION);

报告:

    |
208 | println!("{}", COMPONENT_CRD);
| ^^^^^^^^^^^^^ not found in this scope
error[E0425]: cannot find value `CONFIG_CRD` in this scope
--> src/abc.rs:209:54
|
209 | let config_resource = RawApi::customResource(CONFIG_CRD)
| ^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `CONFIG_VERSION` in the crate root
--> src/abc.rs:210:24
|
210 | .version(::CONFIG_VERSION)
| ^^^^^^^^^^^^^^ not found in the crate root

error[E0425]: cannot find value `CONFIG_GROUP` in the crate root
--> src/abc.rs:211:22
|
211 | .group(::CONFIG_GROUP)
| ^^^^^^^^^^^^ not found in the crate root

最佳答案

我假设我们正在谈论 Rust 2018 版。我建议阅读 Path clarity部分,尤其是这部分:

The prefix :: previously referred to either the crate root or an external crate; it now unambiguously refers to an external crate. For instance, ::foo::bar always refers to the name bar inside the external crate foo.

使用不能使用::CONFIG_VERSION::main::CONFIG_VERSION等。几个选项:

  • 直接使用crate::CONFIG_VERSION
  • 导入它 使用 crate::CONFIG_VERSION 并只使用 CONFIG_VERSION

abc.rs内容:

pub(crate) fn foo() {
println!("{}", crate::CONFIG_VERSION);
}

另一个 abc.rs 变体:

use crate::CONFIG_VERSION;

pub(crate) fn foo() {
println!("{}", CONFIG_VERSION);
}

main.rs 内容:

pub(crate) const CONFIG_VERSION: &str = "v1alpha1";

mod abc;

fn main() {
abc::foo()
}

关于rust - 为什么在不同的 mod 中找不到我的 const 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com