У меня есть некоторый код, сгенерированный bindgen, который имеет указатели функций, представленные как Option<T>
.
pub type SomeFnPointerType = ::std::option::Option<
unsafe extern "C" fn ( /* .. large number of argument types .. */)
-> /* return type */
> ;
Я хочу сохранить развернутые значения в структуре.Однако для типов указателей на внутренние функции нет псевдонимов, так как я могу определить эту структуру?Я не могу реорганизовать код, потому что он генерируется автоматически.
Я хочу сделать что-то вроде этого (в псевдокоде C ++ 'ish):
struct FunctionTable {
decltype((None as SomeFnPointerType).unwrap()) unwrappedFn;
/* ... */
};
или, может быть, просто SomeFnPointerType::T
, если это такпозволено.
Можно ли добиться этого в Rust?Если нет, то единственный способ увидеть это - вручную определить эти типы путем копирования кода из сгенерированного файла в отдельный рукописный файл и синхронизации типов вручную.