首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Actix和Bevy中,看似不同的函数是如何工作的?

在Actix和Bevy中,看似不同的函数是如何工作的?
EN

Stack Overflow用户
提问于 2022-06-14 10:19:44
回答 1查看 104关注 0票数 1

好的,我知道它不是一个真正的变量函数,但我不知道如何在标题中更清楚地说明它。

Actix (Route::to)和Bevy (App::add_system)都有接受可变数量参数的函数。我很想知道:

  • 这种(锈蚀)设计模式是如何命名的?
  • 它怎麽工作?例如,Actix如何“知道”to已被传递给带有QueryPath类型的函数?

我所能发现的就是函数应该实现一个类型(Handler<>/InfoSystemDescriptor<>),但是在Handler<>的情况下,只有元组实现它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-14 10:28:14

这种(锈蚀)设计模式是如何命名的?

我不认为有一个特殊的名称,但它使用宏(虽然不是必要的,只是为了减少重复)来实现对所有函数都有N个参数的特性,例如,在Actix的情况下是Handler,在Bevy的情况下是InfoSystemDescriptor

但是在Handler<>的情况下,只有元组实现它。

不是的。它是为函数实现的(您可以在每个具有Func绑定的impl中看到Fn(...)泛型参数),其参数类型的泛型参数Args设置为元组。

他们传递函数信息的方式取决于实际情况,但通常是某种特征方法。例如,在actix中,Args (参数类型的元组)必须实现FromRequest,这是使用一串包层实现转发给每个参数的,因此最终每个参数都会使用它的FromRequest impl进行解析,并通过Handler::call()传递给函数。类似地,实现Responder需要返回类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72615276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档