Get basic incomplete Python queue API working

This commit is contained in:
Michael Bradley 2025-01-08 22:52:25 +13:00
parent 661e1d220a
commit 0995e6db90
Signed by: MichaelBradley
SSH key fingerprint: SHA256:cj/YZ5VT+QOKncqSkx+ibKTIn0Obg7OIzwzl9BL8EO8
8 changed files with 69 additions and 45 deletions

25
src/queue/pure.rs Normal file
View file

@ -0,0 +1,25 @@
// A "pure" priority queue that supports duplicates, but not arbitrary deletions or weight updates
use crate::backing::{
item::Item,
pure::{binary_heap::BinaryHeap, PureBacking},
};
use pyo3::prelude::*;
#[pyclass]
pub struct PureQueue {
backing: Box<dyn PureBacking<Item<Py<PyAny>, f64>>>,
}
#[pymethods]
impl PureQueue {
#[new]
fn new() -> Self {
Self {
backing: Box::new(BinaryHeap::new()),
}
}
fn __len__(self_: PyRef<'_, Self>) -> usize {
self_.backing.len()
}
}