我想将
T
转换为字节数组,
fn to_byte<T: Sized>(a: T) -> [u8; std::mem::size_of::<T>()] {
unimplemented!()
}
当我调用这个函数时
let a = to_bytes::<u32>();
类型将被确认,但出现错误:
error[E0277]: the size for values of type `T` cannot be known at compilation time
--> lab/test-bit/src/main.rs:3:56
|
3 | fn to_byte<T: Sized>(a: T) -> [u8; std::mem::size_of::<T>()] {
| - this type parameter needs to be `Sized` ^ doesn't have a size known at compile-time
|
稳定的 Rust 不支持在 const 表达式中使用泛型参数。
在夜间,只要启用
const_generics
和 const_evaluatable_checked
,代码就应该可以工作。
无论如何,你都不需要
Sized
绑定,它是隐式的。