![](/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.