Terrarum::异世界丨居正博客
Recent content on Terrarum::异世界丨居正博客
马上订阅 Terrarum::异世界丨居正博客 RSS 更新: https://blog.skyju.cc/index.xml
浅谈 Rust 中如何把 Async Function 放在 HashMap 里

需求
经常会有这样的需求,需要根据具体参数的不同调用不同的处理函数。
比如根据 URL 的不同,调用不同的路由 handler;根据 command 的不同,调用不同的处理 handler。
这些需求基本都可以抽象为一件事:把 function 放在 HashMap 里。
如果是异步编程的话,那么就是把 async function 放在 HashMap 里了。
这件事在 Rust 中做起来,要比想象中困难。
今天就来浅谈一下这个主题。
框架
我们希望设计一个路由器结构体,里面放一个 HashMap。
HashMap 以 String 为 key,具体的处理函数为 value。
在初始化的时候把处理函数按不同的 key 放到 HashMap 里,调用时根据不同情况按 key 取出。
简化的话,处理函数就定为接受一个 String 并返回一个 String。
大概是这种感觉:
|
|