У меня есть структура с байтовым массивом. Эта структура фактически происходит из привязок FFI, созданных bindgen, и ее размер определяется в C коде с использованием макроса, например:
C code:
#define FOO_SIZE 100
struct the_struct
{
char foo[FOO_SIZE];
/* other fields... */
};
Сгенерированный FFI bindings:
pub struct the_struct {
pub foo: [::std::os::raw::c_char; 100usize],
// other fields...
}
Я хочу убедиться, что данные, поступающие со стороны Rust API, вписываются в foo
. Я также не хочу жестко кодировать FOO_SIZE
в моем Rust API, поскольку он может быть изменен.
Я понимаю, что это можно сделать, создав сначала экземпляр структуры, но потом снова, что потребует явного инициализация foo
, которая кажется невозможной без знания ее размера. Кроме того, это дополнительный шаг, который я хочу избежать.
Можно ли каким-то образом получить размер foo
статически, не создавая структуру? Если нет, то какой будет лучший подход? Изменение C кода не является возможным.