generics - 如何重新导出具有具体类型的泛型函数?
问题描述
我有一个通用功能foo<T>()
。但是,我想专门针对 type 的功能usize
。我可以声明另一个函数并调用泛型函数。但是,我想知道是否可以使用任何语法糖,例如 (pseudo code) 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)
}
推荐阅读
- android - AbsoluteToLocal 在 Android 上不像在 Windows 上那样工作
- javascript - 隐藏制表符单元格上的标题标签
- python - 如何将 HTML 转换为 Python 字典列表
- spring-boot - 嗨,我正在尝试将 DXF 解析库 Kabeja 与 Spring Boot 一起使用
- java - 使用相机 2 录制视频
- python - tkinter 框架中的 Matplotlib BarPlot 更新
- javascript - AngularJs - 如何在不使用 ng-touch 或 ng-click 的情况下检测移动设备中的点击事件?
- c++ - 霓虹灯代码比普通的 C 代码慢一点。但是,我预计霓虹灯的速度会快 3 到 4 倍。任何建议如何提高性能?
- kubernetes - 为什么“helm list”命令看不到 Gitlab Auto DevOps helm 版本
- android - Dagger Hilt - What’s the point of @ApplicationContext and @ActivityContext?