【已解决】(感谢e神)《仍有讨论的地方》(规则问题、无法编译、限制)可变struct中的闭包参数使用struct本身、挑战可变借用多次无法编译

💡 原文中文,约1200字,阅读约需3分钟。
📝

内容提要

这篇文章讨论了如何将Rust函数绑定到解释器中使用。作者想要让从cx中获取的target_func作为上下文传入,但是无法实现。文章提供了相关代码,并指出编译错误。

🎯

关键要点

  • 文章讨论如何将Rust函数绑定到解释器中使用。

  • 作者希望将从cx中获取的target_func作为上下文传入,但遇到编译错误。

  • 提供了相关代码示例,展示了如何定义Content结构体和EnvFunction枚举。

  • init_built_in_functions函数用于初始化内置函数并将其插入到map_env_fun中。

  • 在main函数中,尝试调用target_func时出现编译失败的错误。

延伸问答

如何将Rust函数绑定到解释器中使用?

可以通过定义一个结构体和枚举来实现,将Rust函数作为闭包存储在HashMap中。

在Rust中如何定义一个包含闭包的结构体?

可以定义一个结构体,例如Content,包含一个HashMap,HashMap的值为EnvFunction枚举,其中存储闭包。

为什么在调用target_func时会出现编译错误?

编译错误可能是由于target_func的类型不匹配或闭包的借用规则未遵循导致的。

init_built_in_functions函数的作用是什么?

该函数用于初始化内置函数,并将其插入到Content结构体的map_env_fun中。

如何在Rust中使用HashMap存储函数?

可以使用HashMap<String, EnvFunction>来存储函数,其中EnvFunction是一个枚举,包含闭包类型。

在Rust中如何处理闭包的借用问题?

需要确保闭包的借用符合Rust的所有权和借用规则,避免多次可变借用导致的编译错误。

➡️

继续阅读