<div>ممر متعدد الأطوار متعدد الأشكال مع السمات (Traits)</div>

Rust Hard traits

مهمة «<div>ممر متعدد الأطوار متعدد الأشكال مع السمات (Traits)</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.

تنسيق الإدخال

<div>سلسلة تحتوي على أوامر وأرقام مفصولة بمسافات. على سبيل المثال: <code>'add 5 mul 2 neg'</code>.</div>

تنسيق الإخراج

<div>
<p>عدد صحيح — نتيجة معالجة القيمة الابتدائية 0 عبر خط أنابيب المراحل.</p>
</div>

أمثلة

مثال 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