Pipeline polimórfico multifásico com traits
Rust
Hard
traits
Tarefa «Pipeline polimórfico multifásico com traits»
Implemente um sistema de traits Stage, Pipeline e Transform, que permita construir pipelines de processamento de dados. O trait Stage define o método process(&self, input: i32) -> i32. O trait Pipeline define o método run(&self, stages: Vec<Box<dyn Stage>>, input: i32) -> i32, que aplica sequencialmente todas as stages. O trait Transform define o método transform(&self, value: i32) -> i32, que pode alterar o valor de acordo com alguma regra. Implemente as estruturas AddStage, MultiplyStage, NegateStage, cada uma implementando Stage. Implemente também a estrutura SimplePipeline, implementando Pipeline. Em seguida, escreva uma função que recebe uma string com comandos (add, mul, neg) e números, cria as stages correspondentes, executa o pipeline com o valor inicial 0 e exibe o resultado. Os comandos são fornecidos separados por espaços: add 5 mul 2 neg. Restrições: valor de entrada i32, resultado garantido cabe em i32.
Formato de Entrada
String com comandos e números separados por espaços. Por exemplo: 'add 5 mul 2 neg'.
Formato de Saída
Número inteiro — resultado do processamento do valor inicial 0 através do pipeline de stages.
Exemplos
Exemplo 1
ENTRADA
add 5 mul 2 neg
SAÍDA
-10
Exemplo 2
ENTRADA
mul 3 add 10 neg
SAÍDA
-10
Exemplo 3
ENTRADA
5
1 2 3 4 5
SAÍDA
0
Exemplo 4
ENTRADA
add 100 mul 0
SAÍDA
0
Exemplo 5
ENTRADA
4
SAÍDA
0
main.rs