gpt4 book ai didi

rust - 在 [false, true] 中迭代的最有效方法是什么?

转载 作者:行者123 更新时间:2023-12-03 11:27:13 25 4
gpt4 key购买 nike

我有一个接受 3 个 boolean 值的函数 foo,我想用 boolean 值的每个组合得到这个函数的结果。

这是我的做法:

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 crate ,然后使用 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));
}
}

不是说它“更高效”,而是写起来更短。

关于rust - 在 [false, true] 中迭代的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65296850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com