【发布时间】:2019-11-04 09:54:53
【问题描述】:
有时我有一个变量,我想用变量的类型调用一个“turbofish”函数。例如:
fn main() {
let arr = [0u8; 4];
println!("size_of arr: {}", std::mem::size_of::< TYPE_OF(arr) >());
}
当然,TYPE_OF() 不存在。所以我最终不得不手动对类型进行硬编码:
println!("size_of arr: {}", std::mem::size_of::< [u8;4] >());
如果我能获得变量的类型(在编译时,而不是运行时),那肯定会很好,这样我就不需要自己对类型进行硬编码了。
【问题讨论】:
-
你的具体例子可以
std::mem::size_of_val(&arr)处理。而且我敢打赌,对于您能想到的大多数其他示例,都有更好的选择。 -
@BenjaminLindley 这应该是答案。由于 Rust 会在可能的情况下推断类型,因此模糊问题没有意义,只有极少数特定情况需要处理,比如这个。