![](/img/trans.png)
[英]Is there any way to get a function pointer from a &str type in rust which is provided by the use
[英]How to store generic function pointer as `any` in Rust?
我正在构建一个将函数作为输入的板条箱。
我想隐藏 function 的类型,所以Scope
不需要是通用的。
这应该没问题,因为 function 指针是“复制”类型并且是 static。
use std::any::{Any, TypeId};
struct Scope {
caller: &'static dyn Any,
props_id: TypeId
}
impl Scope {
fn new<T: 'static>(f: fn(T)) -> Self {
let caller = f as &'static dyn Any;
let props_id = TypeId::of::<T>();
Self { caller, props_id }
}
fn call<T: 'static>(&self, val: T) {
let caller = self.caller.downcast_ref::<fn(T)>().unwrap();
caller(val);
}
}
但是,我不能对 function 指针使用&'static
,并且我不能使用any
不使用框的保证。 我不想使用盒子,因为fn()
的类型是已知的。
我将如何 go 解决此问题,甚至可能利用 function 指针的一些不安全性来使其正常工作?
我可以转换指针类型,但我正在寻找一些不太难误用的东西。
您可以改用&'static fn(T)
。 我认为没有办法将 function 指针本身转换为&dyn Any
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.