我有一个游戏,我尝试编码,我想记忆一个next_guess
函数,因为它的成本。我知道有一些记忆板条箱,但我有一些奇怪的要求,整个项目是一个练习学习 rust ,所以我想知道一个真正的海象会怎么想。next_guess
函数在Node struct
的impl
中。游戏树分支非常快。所以每一层都有很多可能的下一步节点要分析。如果我把一个对memoize HashMap
的引用添加到Node struct
以供next_guess
使用,我不能使它可变,因为不能有多个对它的可变引用。但是我需要它可变,这样我就可以添加新值。我认为使用全局变量是一个禁忌,但是将HashMap
设置为lazy_static
是正确的方法吗?或者我应该使用unsafe
块来访问它(我可以这样做吗?)。
2条答案
按热度按时间31moq8wy1#
就我的两点意见:
Node
中包含一个HashMap
将占用大量空间。Node
,您真的想在HashMap
中查找它吗?Node
本身不能存储缓存的值吗(可能在Option<BestNextGuess>
中)?bn31dyow2#
最后,我通过重构创建了一个拥有
HashMap
的游戏struct
,然后在调用节点struct
之前,首先通过游戏struct
传递所有的猜测尝试。