gpt4 book ai didi

rust - 等价于 C++ 中的 constexpr?

转载 作者:行者123 更新时间:2023-11-29 07:42:27 27 4
gpt4 key购买 nike

查看这段代码:

fn main() {
let something_const = 42;
fn multiply(nbr: i32) -> i32 {
nbr * something_const
}
println!("{}", multiply(1));
}

rustc 输出

error[E0434]: can't capture dynamic environment in a fn item; use the || { ... } closure form instead
--> main.rs:19:15
|
19 | nbr * something_const
| ^^^^^^^^^^^^^^^

但是 something_const 不是动态的,因为它在编译时已知。

它在 Rust 中是否等同于 C++ constexpr 机制?

最佳答案

constexpr 在 C++ 中可以在两种不同的情况下使用:

  • 限定一个常量,并表示这个常量必须在编译时可用
  • 限定函数,并表示该函数必须可用于编译时评估

Rust 支持两者,尽管方式有限:

  • 你可以使用const来声明一个常量,而不是let来声明它是真正的常量
  • 您可以使用const 来限定一个函数,声明它可以在编译时求值。 Not all functions can be made const yet .

在你的情况下,你想要第一次使用:

fn main() {
const something_const: i32 = 42;

fn multiply(nbr: i32) -> i32 {
nbr * something_const
}

println!("{}", multiply(1));
}

请注意,与 let 不同,必须用类型注释常量。

此外,编译器会提示命名;常量使用 ALL_CAPS

关于rust - 等价于 C++ 中的 constexpr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41346532/

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