【已解决】(感谢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的所有权和借用规则,避免多次可变借用导致的编译错误。