function - 在 trait 实现中关联特定函数
问题描述
有没有办法声明一个将函数作为泛型参数并使用它的泛型特征?澄清(非功能代码):
pub trait Test<F, T> where F: Fn(i32) -> T {
fn test(arg: i32) -> T {
let func: F;
func(arg)
}
}
解决方案
您可以在实现特征时关联特定功能(直到现在才知道):
fn func() -> String {
String::from("hello")
}
trait MyTrait {
const FUNC: fn() -> String;
}
struct MyType;
impl MyTrait for MyType {
const FUNC: fn() -> String = func;
}
fn main() {
println!("{}", (MyType::FUNC)()); // prints hello
}
推荐阅读
- c++ - 为什么在使用 const 函数 C++ 时 const 是多余的?
- python - 来自 (BLS)API 的多个数据源/系列请求仅使用 URL
- angular - 如何使这个响应和每个框填充到图像框?
- java - Jenkins SSH 步骤无效的私钥
- css - 如何让子元素匹配 flex-grow 元素的高度?
- javascript - 如何从角度材料表中的嵌套 json 获取数据?- 角度
- laravel - Laravel FTP - Windows 服务器的根路径
- c - 关于 char *s_gets(char *st, int n) 的问题
- ios - 使用 App Store Connect API 更新配置文件。如何?
- .net-core - OxyPlot.Wpf 是否与 .NET Core 兼容?