gpt4 book ai didi

rust - 如何访问与公共(public)函数同名的结构字段?

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

我正在尝试访问我已实例化的特定 clap::App 的版本。但是,字段 version与公共(public)功能一样存在 version()

这里是相关的源代码:

pub struct App<'a, 'v, 'ab, 'u, 'h, 'ar> {
// ...
version: Option<&'v str>,
// ...
}

impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{
// ...
pub fn version(mut self, v: &'v str) -> Self {
self.version = Some(v);
self
}
// ...
}

还有我的代码:

pub fn build_cli() -> App<'static, 'static> {
App::new("my-pi")
.version("0.1.0")
// ...

let app = build_cli();
assert_eq!(app.version, "0.1.0"); // <-- Error here

字段version 和函数version() 都存在于App 上。怎么会这样?以及如何访问字段 version

错误:

error[E0615]: attempted to take value of method `version` on type `clap::App<'_, '_>`
--> src/cli.rs:27:21
|
27 | assert_eq!(app.version, "0.1.0");
| ^^^^^^^
|
= help: maybe a `()` to call it is missing?

最佳答案

How can this be?

语言的定义方式使得字段和方法之间没有冲突。

How can I access the field version?

你不能:它是私有(private)的并且没有 getter 方法。

关于rust - 如何访问与公共(public)函数同名的结构字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52614536/

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