【问题标题】:How to use an input argument as the name of a created variable?如何使用输入参数作为创建变量的名称?
【发布时间】:2020-07-17 20:18:35
【问题描述】:

所以基本上我会有一个要求两个输入参数的函数,称之为名称和值。现在值 x 被输入到 name 中,我想要它,以便一个名为 x 的新变量被赋值为“value”中的值

我只是通过 name = value 进行了尝试,但最终将 name 内的值重新分配为来自 x 的值,而不是将 x 重新分配为值。

pub fn main()
{
    variable_maker(x, 20)
}

pub fn variable_maker(name, value)
{
    name = value;
}

【问题讨论】:

  • 请指定您的用例。 name 是动态的吗?变量应该使用什么范围?如前所述,这个问题对 Rust 没有多大意义。
  • name 只是一个普通变量,作用域是全局的

标签: rust assign


【解决方案1】:

只有一个宏:

macro_rules! variable_maker {
    ($name:ident, $expression:expr) => {
        let mut $name = $expression;
    };
}

fn main() {
    variable_maker!(x, 20);
    println!("{}", x); // 20
    x = 30;
    println!("{}", x); // 30
}

但是有什么意义呢?

【讨论】:

  • 我正在尝试将从数据库中获取的值存储到变量中。 - 我已经可以做到,但我还想指定他们的名字作为输入参数。
  • 你通常将数据反序列化为一个结构体(例如,通过serde crate)并像在普通 Rust 中一样使用该结构体
猜你喜欢
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 2016-08-10
  • 1970-01-01
相关资源
最近更新 更多