强制读取枚举值不匹配

时间:2019-12-06 22:37:20

标签: rust match function-pointers unsafe

我有一个枚举RunTime,其中包含许多可能的函数指针之一。

use libloading::Symbol;

type three_isize = unsafe fn(isize, isize, isize) -> bool;
type two_isize = unsafe fn(isize, isize) -> bool;

enum RunTime<'lib> {
    ThreeISize(Symbol<'lib, three_isize>),
    TwoISize(Symbol<'lib, two_isize>),
}

impl<'lib> RunTime<'lib> {
    #[inline(always)]
    pub fn execute_threeisize(&self, a: isize, b: isize, c: isize) -> bool {
        match self {
            RunTime::ThreeISize(func) => return unsafe{ func(a, b, c) },
            _ => unreachable!(),
        }
    }
}

要执行其中一个功能,它指向3 isize,并返回一个bool,我可以调用execute_threesize()。要访问RunTime中的函数指针,我需要使用match。有没有unsafe的{​​{1}}方法来访问RunTime内部的函数指针?安全执行不需要匹配,因为只有在我确定它是match时,我才会调用execute_threesize()

0 个答案:

没有答案