Rust报错‘attempt to use a non-constant value in a constant’原因咨询
Rust编译错误E0435原因及解决办法
问题代码
let rng = rand::thread_rng(); const NUMBER_TO_GUESS: u32 = rng.gen();
报错信息
error[E0435]: 尝试在常量中使用非常量值 --> src/main.rs:12:34 | 12 | const NUMBER_TO_GUESS: u32 = rng.gen(); | --------------------- ^^^ 非常量值 | | | 提示:考虑用`let`替代`const`:`let NUMBER_TO_GUESS`
原因解析
Rust中的const是编译期常量,要求它的值必须在编译阶段就能确定,不能依赖运行时的计算或状态。而rng.gen()是运行时生成随机数的操作,结果只有程序运行后才能确定,属于非常量值,因此无法赋值给const变量。
解决办法
将const替换为let,let定义的是运行时变量,可以存储运行时生成的动态值:
let rng = rand::thread_rng(); let NUMBER_TO_GUESS: u32 = rng.gen();
内容的提问来源于stack exchange,提问作者Ali Shah lakhani
相关产品推荐
相关产品推荐

