Rust:如何在编译时或其他方式获取 sizeof::<T>? [重复]

问题描述 投票:0回答:1

我想将

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 sizeof
1个回答
3
投票

稳定的 Rust 不支持在 const 表达式中使用泛型参数。

在夜间,只要启用

const_generics
const_evaluatable_checked
,代码就应该可以工作。

无论如何,你都不需要

Sized
绑定,它是隐式的。

© www.soinside.com 2019 - 2024. All rights reserved.