我有一个枚举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()
。