You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:10:22