我正在开发一个游戏,我发现自己经常检查某些数量是否代表我的世界的向量所接受的索引范围:
if(a >= 0 && a < 16 && b >= 0 && b < 16 && c >= 0 && c < 16 &&
d >= 0 && d < 16 && e >= 0 && e < 16)
{
//do things with vector[a][b][c][d][e]
}
Run Code Online (Sandbox Code Playgroud)
我经常要检查比这更多的条件.有没有办法让这些检查更简洁和/或更容易阅读?
或者,有没有办法可以避免完全进行检查?矢量是16x16x16x16x16; 我可以这么做,如果我给它一个16作为索引,它会做什么,而不是段错误?
我正在使用一个使用serde-json的Rust程序,我非常喜欢#[derive(Serialize, Deserialize)]它为自定义结构和枚举使用的宏.使用我自己的类型,宏可以正常工作.但是,我希望能够从我正在使用的其他库中调用类型的宏.
我会自己实现这些类型的特性Serialize和Deserialize特征,但是代码Deserialize特别复杂,为我在结构中使用的每个库类型写入都会很痛苦.