Он будет работать, если SomeType
- правильный тип.
Результатом import("some/path")
будет string
. Вы не можете разыграть string
на struct
. Но в вашем случае это, вероятно, двоичные данные, а не фактический текстовый файл. Вы можете сделать следующее:
// Load the file and convert it to `immutable(ubyte[])`
immutable ubyte[] manifestBinaryData = cast(immutable ubyte[]) import("path/to/file");
// Safety check, you can even add an error message with expected and actual size
static assert(manifestBinaryData.length >= SomeType.sizeof);
// Equivalent to a reinterpret_cast in C++. The compiler will not check anything.
immutable SomeType* myFont = cast(immutable SomeType*) manifestBinaryData.ptr;
Вы можете делать более умные вещи: например, вы можете анализировать / обрабатывать данные во время компиляции, если хотите. Но я считаю, что приведенный выше фрагмент наиболее близок к вашим намерениям.