将通用函数分配给变量时,如何指定类型

时间:2015-06-25 01:04:27

标签: generics types rust

我想在概念上做一些像这样的事情: let fun: fn(&mut _) -> Result<u32> = ReadBytesExt::read_u32::<BigEndian>;

但是这不起作用,因为Rust认为我试图用ReadBytesExt::read_u32作为类型arg并且没有其他arg来调用BigEndian。 (我得到错误的args错误数量。)

所以我该怎么做,看起来像是锈类型系统应该允许的东西,因为我试图更具体。

1 个答案:

答案 0 :(得分:1)

值不能也永远不能包含绑定泛型;由于单态化的作用,这个概念根本无法实现。

这样的事情需要用这样的包装函数来完成:

fn read_u32_be<R: Read>(&mut r: R) -> byteorder::Result<u32> {
    r.read_u32::<BigEndian>()
}