rust - 迭代 [false, true] 的最有效方法是什么?
问题描述
我有一个foo
需要 3 个布尔值的函数,我想用每个布尔值组合得到这个函数的结果。
这是我的做法:
fn foo(b1: bool, b2: bool, b3: bool) -> bool {
b1 && b2 || !b3
}
fn main() {
for b1 in vec![false, true] {
for b2 in vec![false, true] {
for b3 in vec![false, true] {
println!("{} {} {} -> {}", b1, b2, b3, foo(b1, b2, b3));
}
}
}
}
有没有比创建一个向量然后迭代它更直接/更短的方法?
有没有办法使用宏或可变函数来做到这一点,以便编译器只需遍历每个案例而不进行迭代?
解决方案
您可以使用itertools
板条箱,然后使用iproduct!()
宏。
use itertools::iproduct;
fn main() {
const FT: &[bool; 2] = &[false, true];
for (&b1, &b2, &b3) in iproduct!(FT, FT, FT) {
println!("{} {} {} -> {}", b1, b2, b3, foo(b1, b2, b3));
}
}
不是说它“更高效”,而是写起来更短。
推荐阅读
- android - 使用改造在 android 中解析这个嵌套的 JSON 数组
- reactjs - 我应该遵循哪个指南来构建应用程序:Spring Boot (REST)+React+OKTA
- python - 如何查找距离 b/w 地理位置 w/ 测地线 w/ 坐标分为 4 个不同的列以创建距离列--ValueError
- power-automate - 如何使用 Power Automate 提取特定 URL?
- python - 在使用 python 正则表达式模块的行中查找锚标记的问题
- docker - 如何查看容器的日志?
- swagger - Springfox 类参数已弃用
- react-native - 为特定屏幕实现隔离存储时无法访问全局存储还原
- react-native - 如何使用 react-native-reanimated 或 react-native-redash 访问时钟时间
- typescript - 打字稿细化混乱