هل توجد في Rust مجموعات من نوع queue و stack؟
مرحبًا بالجميع! بدأت تعلم Rust مؤخرًا، ولدي سؤال حول هياكل البيانات. في لغات أخرى (مثل C++ أو Python) توجد queues و stacks مدمجة. حاولت العثور على شيء مشابه في المكتبة القياسية لـ Rust، لكنني لم أتوصل بعد.
إليك ما جربته: أريد كتابة برنامج يعالج المهام بترتيب وصولها (FIFO). أنشأت vector واستخدمت `push` للإضافة، وللاستخراج حاولت استخدام `remove(0)`، لكن المترجم يشتكي من الأداء. إليك مثال:
```rust
fn main() {
let mut queue: Vec = Vec::new();
queue.push(1);
queue.push(2);
queue.push(3);
// أحاول استخراج العنصر الأول
let first = queue.remove(0);
println!("{}", first);
}
```
هذا يعمل، لكنني سمعت أن `remove(0)` لـ `Vec` هو O(n)، لأن جميع العناصر تنتقل. بالنسبة لـ stack كنت سأستخدم `pop()` الذي يعمل بـ O(1)، لكن هذا LIFO. وأنا أحتاج FIFO.
أخبروني، هل توجد في Rust queues مناسبة؟