1.0 KiB
Troubles encountered with Rust during the making of this library
-
No way to create dynamic-sized arrays on the stack. A lot of Vulkan functions require passing an array of small elements (small structs or integers). Building such an array with a
Vec
can be expensive, especially when most of the time the array only contains a single element. -
No way to create a
*mut T
pointer from a*mut c_void()
and a size whenT
is unsized. This had to be implemented in a custom trait. -
Can't cast an
ImageResource
into aResource
even though the former depends on the latter. -
This library was designed with specialization in mind. There are several
is_compatible
trait methods that perform deep comparisons between layouts. With specialization available, these methods could be specialized astrue
for layouts that are known to always be compatible. -
HKTs would make for a nicer API.