使用 const 通过强制转换来计算其他 const 表达式

Mit*_*lin 2 rust

目前我有以下内容

const WIDTH : u16 = 1920;
const HEIGHT: u16 = 1080;
const PIXELS : usize = 1920 * 1080;
Run Code Online (Sandbox Code Playgroud)

拥有类似的东西会更好

const WIDTH : u16 = 1920;
const HEIGHT: u16 = 1080;
const PIXELS : usize = usize::from(WIDTH) * usize::from(HEIGHT);
Run Code Online (Sandbox Code Playgroud)

但这不会编译。我认为这是因为const编译时变量不能依赖于usize::from. 还有其他选择吗?

Ibr*_*med 5

usize::from不是常数函数。如果是的话,你的例子就能编译得很好。相反,您可以简单地使用变量强制转换,这都是usize::from在内部完成的:

const WIDTH : u16 = 1920;
const HEIGHT: u16 = 1080;
const PIXELS: usize = (WIDTH as usize) * (HEIGHT as usize);
Run Code Online (Sandbox Code Playgroud)