使用 mem::size_of::<T> 作为数组长度时,在编译时无法知道类型为“T”的值的大小

0x4*_*D18 6 generics rust

考虑以下函数:

fn make_array<T>()
where
    T: Sized,
{
    let bytes = [0u8; std::mem::size_of::<T>()];
}
Run Code Online (Sandbox Code Playgroud)

无论出于何种原因,它都无法编译

fn make_array<T>()
where
    T: Sized,
{
    let bytes = [0u8; std::mem::size_of::<T>()];
}
Run Code Online (Sandbox Code Playgroud)

尽管事实上Sized泛型参数有一个trait bound T。这对我没有任何意义。

为什么会发生这种情况,我该如何解决?

mic*_*srb 7

这似乎是错误 #43408: Array lengths don't support generic parameters