看到这段代码:
fn main() {
let something_const = 42;
fn multiply(nbr: i32) -> i32 {
nbr * something_const
}
println!("{}", multiply(1));
}
Run Code Online (Sandbox Code Playgroud)
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
| ^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
但something_const它不是动态的,因为它在编译时是已知的.
它在Rust的C++ constexpr机制中是等价的吗?
Mat*_* M. 14
constexpr 在C++中可以用于两种不同的情况:
Rust支持两者,尽管有限的方式:
const用来声明一个常量,而不是let声明它是真正的常量const来限定函数,声明它可以在编译时进行评估在您的情况下,您想要第一次使用:
fn main() {
const something_const: i32 = 42;
fn multiply(nbr: i32) -> i32 {
nbr * something_const
}
println!("{}", multiply(1));
}
Run Code Online (Sandbox Code Playgroud)
请注意,与with不同let,必须使用其类型注释常量.
此外,编译器会抱怨命名; 常数使用ALL_CAPS.
| 归档时间: |
|
| 查看次数: |
3030 次 |
| 最近记录: |