是否可以以某种形式将不同的Rust类型存储到Vec
中,以便我能够在以后获取类型?
我可以存储任何类型的TypeId
,但据我所知,我无法使用TypeId
返回原始类型。
在Java术语中,我想创建一个[boolean.class, char.class, ...]
等等。
答案 0 :(得分:6)
没有。类型不是运行时构造,在编译期间将被删除。你不能拥有这些类型的集合,因为它们不存在。
大多数情况下,您希望create a heterogeneous collection of objects所有人都遵守某些共享界面(例如,app.listen(app.get('port'), function () {
console.log('Server has started! http://localhost:' + app.get('port') + '/');
});
)。
答案 1 :(得分:4)
Integer.class
在Java中有用的唯一原因是因为Java实现了 reflection :
因此,虚拟机可以在运行时从空中创建类型的实例。
自动,普遍的反思违反了Rust的至少一个核心原则:
你不会为你不能使用的东西买单。
所以没有实施。
Rust还有一些的反射:
TypeId
但是,前者不会产生任何内存/性能开销,而后者则按使用付费。
据我所知,目前还没有提出大幅度反思的建议。即使是向下转换现在也被视为库,而不是语言选项(参见query_interface包)。