Pipeline polymorphe multiphase avec traits

Rust Hard traits

Tâche «Pipeline polymorphe multiphase avec traits»

Implémentez un système de traits Stage, Pipeline et Transform permettant de construire des pipelines de traitement de données. Le trait Stage définit la méthode process(&self, input: i32) -> i32. Le trait Pipeline définit la méthode run(&self, stages: Vec<Box<dyn Stage>>, input: i32) -> i32, qui applique séquentiellement toutes les étapes. Le trait Transform définit la méthode transform(&self, value: i32) -> i32, qui peut modifier la valeur selon une certaine règle. Implémentez les structures AddStage, MultiplyStage, NegateStage, chacune implémentant Stage. Implémentez également la structure SimplePipeline, implémentant Pipeline. Ensuite, écrivez une fonction qui reçoit une chaîne de commandes (add, mul, neg) et des nombres, crée les étapes correspondantes, lance le pipeline avec une valeur initiale de 0 et affiche le résultat. Les commandes sont fournies séparées par des espaces : add 5 mul 2 neg. Contraintes : la valeur d’entrée est de type i32, le résultat tient obligatoirement dans un i32.

Format d\ entrée

Chaîne de commandes et de nombres, séparés par des espaces. Exemple : 'add 5 mul 2 neg'.

Format de sortie

Nombre entier — résultat du traitement de la valeur initiale 0 à travers le pipeline d’étapes.

Exemples

Exemple 1

ENTRÉE
add 5 mul 2 neg
SORTIE
-10

Exemple 2

ENTRÉE
mul 3 add 10 neg
SORTIE
-10

Exemple 3

ENTRÉE
5 1 2 3 4 5
SORTIE
0

Exemple 4

ENTRÉE
add 100 mul 0
SORTIE
0

Exemple 5

ENTRÉE
4
SORTIE
0
main.rs