From ffe6a7624100ba685fff2bc075a007425c615661 Mon Sep 17 00:00:00 2001 From: Michael Bradley Date: Wed, 8 Jan 2025 23:00:24 +1300 Subject: [PATCH] Update Rust structure to better match proposed Python API --- src/backing/indexed/mod.rs | 12 ++++++++++++ src/backing/keyed/mod.rs | 12 ------------ src/backing/mod.rs | 2 +- src/lib.rs | 4 ++-- src/queue/{pure.rs => keyed.rs} | 4 ++-- src/queue/mod.rs | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 src/backing/indexed/mod.rs delete mode 100644 src/backing/keyed/mod.rs rename src/queue/{pure.rs => keyed.rs} (92%) diff --git a/src/backing/indexed/mod.rs b/src/backing/indexed/mod.rs new file mode 100644 index 0000000..ebc1ad5 --- /dev/null +++ b/src/backing/indexed/mod.rs @@ -0,0 +1,12 @@ +/// Data structures for the "indexed" min-queues, supporting priority updates and arbitrary removals, but no duplicates +use super::{item::Item, pure::PureBacking}; + +/// A data structure usable for backing an "indexed" queue +pub trait IndexedBacking: + PureBacking> +{ + /// Update an item's priority + fn update(data: D, priority: P) -> Result<(), ()>; + /// Remove an item from the queue + fn remove(data: D) -> bool; +} diff --git a/src/backing/keyed/mod.rs b/src/backing/keyed/mod.rs deleted file mode 100644 index e9bc311..0000000 --- a/src/backing/keyed/mod.rs +++ /dev/null @@ -1,12 +0,0 @@ -/// Data structures for the "keyed" min-queues, supporting priority updates and arbitrary removals, but no duplicates -use super::{item::Item, pure::PureBacking}; - -/// A data structure usable for backing a "keyed" queue -pub trait KeyedBacking: - PureBacking> -{ - /// Update an item's priority - fn update(data: D, priority: P) -> Result<(), ()>; - /// Remove an item from the queue - fn remove(data: D) -> bool; -} diff --git a/src/backing/mod.rs b/src/backing/mod.rs index f66e16c..1c34cd3 100644 --- a/src/backing/mod.rs +++ b/src/backing/mod.rs @@ -1,3 +1,3 @@ +pub mod indexed; pub mod item; -pub mod keyed; pub mod pure; diff --git a/src/lib.rs b/src/lib.rs index 64be5b4..fe6b924 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,11 +2,11 @@ pub mod backing; pub mod queue; use pyo3::prelude::*; -use queue::pure::PureQueue; +use queue::keyed::KeyedQueue; /// Bindings for the Rust queue implementations #[pymodule] fn pyority_queue(m: &Bound<'_, PyModule>) -> PyResult<()> { - m.add_class::()?; + m.add_class::()?; Ok(()) } diff --git a/src/queue/pure.rs b/src/queue/keyed.rs similarity index 92% rename from src/queue/pure.rs rename to src/queue/keyed.rs index 4c03a26..bd74284 100644 --- a/src/queue/pure.rs +++ b/src/queue/keyed.rs @@ -6,12 +6,12 @@ use crate::backing::{ use pyo3::prelude::*; #[pyclass] -pub struct PureQueue { +pub struct KeyedQueue { backing: Box, f64>>>, } #[pymethods] -impl PureQueue { +impl KeyedQueue { #[new] fn new() -> Self { Self { diff --git a/src/queue/mod.rs b/src/queue/mod.rs index 9ec004d..9f15bd9 100644 --- a/src/queue/mod.rs +++ b/src/queue/mod.rs @@ -1 +1 @@ -pub mod pure; +pub mod keyed;