```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