我有一个通用函数foo<T>()
。但是,我想专门针对usize
类型的函数。我可以声明另一个函数并调用通用函数。但是,我想知道是否可以使用任何语法糖,例如(伪代码)pub use foo::<usize> as foo_usize
。
use std::fmt::Debug;
fn foo<T: Debug>(a: &T) {
println!("{:?}", a)
}
// I do not want generics, as I need to export this function as extern with #[no_mangle]
#[no_mangle]
pub extern "C" fn foo_usize(a: &usize) {
foo::<usize>(a)
}
最佳答案
您需要通过显式列出函数并执行调用来自己执行单态化:
use std::fmt::Debug;
fn foo<T: Debug>(a: &T) {
println!("{:?}", a)
}
#[no_mangle]
pub extern "C" fn foo_usize(a: &usize) {
foo::<usize>(a)
}
关于generics - 如何重新导出具有具体类型的泛型函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59817810/