itérer code>
function applique à plusieurs reprises une fonction à une valeur pour générer une série de valeurs. Par exemple, appliquer (^ 2) à 2 génère 2, 2 ^ 2, 2 ^ 2 ^ 2, 2 ^ 2 ^ 2 ^ 2, ... (2, 4, 16, 256, ...) p >
Y a-t-il un équivalent dans Rust?
3 Réponses :
À partir de Rust 1.34 , vous pouvez utiliser Donc pour ce problème, vous feriez quelque chose comme ceci: Regardez aussi std::iter::successors
use std::iter::successors;
fn main() {
let v = successors(Some(2_u128), |n| n.checked_mul(*n)).collect::<Vec<_>>();
assert_eq!(v, vec![2, 4, 16, 256, 65536, 4294967296, 18446744073709551616]);
for i in successors(Some(2_u128), |n| n.checked_mul(*n)) {
println!("{}", i);
}
}
std :: iter :: from_fn
a>, cela peut être un peu plus puissant.
Copie possible de Peut vous créez une fonction qui prend une autre fonction et un paramètre et renvoie un flux paresseux d'appels de fonction imbriqués?