```html <div> <p>多阶段多态流水线(带特质)</p> </div> ```

Rust Hard traits

任务 «```html <div> <p>多阶段多态流水线(带特质)</p> </div> ```»

实现由特质 `Stage`、`Pipeline` 和 `Transform` 组成的系统,用于构建数据处理管道。特质 `Stage` 定义方法 `process(&self, input: i32) -> i32`。特质 `Pipeline` 定义方法 `run(&self, stages: Vec<Box<dyn Stage>>, input: i32) -> i32`,该方法依次应用所有阶段。特质 `Transform` 定义方法 `transform(&self, value: i32) -> i32`,该方法可根据某种规则修改值。实现结构体 `AddStage`、`MultiplyStage` 和 `NegateStage`,每个结构体都实现 `Stage`。同时实现结构体 `SimplePipeline`,它实现 `Pipeline`。然后编写一个函数,该函数接收包含命令(add、mul、neg)和数字的字符串,创建相应的阶段,以初始值 0 运行管道,并输出结果。命令以空格分隔:add 5 mul 2 neg。限制条件:输入值为 i32,结果保证在 i32 范围内。

输入格式

一个包含命令和数字的字符串,用空格分隔。例如:'add 5 mul 2 neg'。

输出格式

整数——初始值0经过各阶段管道处理后的结果。

示例

示例 1

输入
add 5 mul 2 neg
输出
-10

示例 2

输入
mul 3 add 10 neg
输出
-10

示例 3

输入
5 1 2 3 4 5
输出
0

示例 4

输入
add 100 mul 0
输出
0

示例 5

输入
4
输出
0
main.rs