从Option <t>中提取类型T

时间:2018-12-08 07:20:32

标签: rust

我有一些由bindgen生成的代码,这些代码具有由Option<T>表示的函数指针。

pub type SomeFnPointerType = ::std::option::Option<
  unsafe extern "C" fn ( /* .. large number of argument types .. */) 
    -> /* return type */
> ;

我想将未包装的值存储在结构中。但是,内部函数指针类型没有类型别名,那么如何定义该结构?我无法重构代码,因为它是自动生成的。

我想做这样的事情(用C ++的伪代码):

struct FunctionTable {
  decltype((None as SomeFnPointerType).unwrap()) unwrappedFn;
  /* ... */
};

,或者如果允许的话,可能只是SomeFnPointerType::T

有可能在Rust中实现吗?如果没有,我看到的唯一方法是通过将生成的文件中的代码复制粘贴到单独的手写文件中来手动定义这些类型,并手动保持类型同步。

1 个答案:

答案 0 :(得分:7)

您可以定义将List<String>公开为关联类型的特征。

T