Tubería polimórfica multifásica con traits

Rust Hard traits

Tarea «Tubería polimórfica multifásica con traits»

Implemente un sistema de traits Stage, Pipeline y Transform que permita construir tuberías de procesamiento de datos. El trait Stage define el método process(&self, input: i32) -> i32. El trait Pipeline define el método run(&self, stages: Vec<Box<dyn Stage>>, input: i32) -> i32, que aplica secuencialmente todas las etapas. El trait Transform define el método transform(&self, value: i32) -> i32, que puede modificar el valor según alguna regla. Implemente las estructuras AddStage, MultiplyStage, NegateStage, cada una implementando Stage. También implemente la estructura SimplePipeline, que implementa Pipeline. Luego, escriba una función que reciba una cadena con comandos (add, mul, neg) y números, cree las etapas correspondientes, ejecute la tubería con el valor inicial 0 y muestre el resultado. Los comandos se proporcionan separados por espacios: add 5 mul 2 neg. Restricciones: el valor de entrada es i32, el resultado cabe garantizadamente en i32.

Formato de entrada

Cadena con comandos y números separados por espacios. Por ejemplo: 'add 5 mul 2 neg'.

Formato de salida

Número entero: resultado del procesamiento del valor inicial 0 a través de la tubería de etapas.

Ejemplos

Ejemplo 1

ENTRADA
add 5 mul 2 neg
SALIDA
-10

Ejemplo 2

ENTRADA
mul 3 add 10 neg
SALIDA
-10

Ejemplo 3

ENTRADA
5 1 2 3 4 5
SALIDA
0

Ejemplo 4

ENTRADA
add 100 mul 0
SALIDA
0

Ejemplo 5

ENTRADA
4
SALIDA
0
main.rs