لقد تم تكليفك بتنفيذ فئة مجمعة تعمل على تحسين وظائف مكتبة المتجهات `im-rs`. ستدعم فئة المجمع، المسماة "VectorWithProtocol"، بروتوكول "IObject". يحدد بروتوكول IObject مجموعة من العمليات التي يمكن إجراؤها على الكائنات.

يجب أن تحتوي فئة `VectorWithProtocol` على الطرق التالية:

1. `new()`: طريقة منشئة تقوم بتهيئة متجه فارغ.

2. ``push(&mut self, value: Object)`: يجب أن تضيف هذه الطريقة `الكائن` المحدد إلى نهاية المتجه.

3.`pop(&mut self) -> Option<Object>`: يجب أن تقوم هذه الطريقة بإزالة العنصر الأخير من المتجه وإعادته. إذا كان المتجه فارغًا، فيجب أن يُرجع `None`.

4.`get(&self, Index: usize) -> Option<&Object>`: يجب أن تُرجع هذه الطريقة مرجعًا إلى العنصر في الفهرس المحدد. إذا كان الفهرس خارج الحدود، فيجب أن يُرجع "لا شيء".

مهمتك هي تنفيذ فئة `VectorWithProtocol` وفقًا للمواصفات المتوفرة. تأكد من استخدام مكتبة `im-rs` لعمليات المتجهات الأساسية.
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}