Expand description
A high-performance Fibonacci Heap implementation in Rust with generic type support.
Fibonacci Heap is a collection of trees that satisfies the minimum heap property. It provides efficient operations for insertion, merging, and decreasing keys, making it ideal for algorithms like Dijkstra’s and Prim’s.
§Features
- O(1) amortized time for insert and merge operations
- O(1) amortized time for decrease key operations
- O(log n) amortized time for extract minimum operations
- Support for multiple data types (i32, f64, char, etc.)
- Comprehensive error handling
- Node validity tracking via
validflag
§Example
use fibonacci_heap::{GenericFibonacciHeap, FibonacciHeapI32};
// Using generic heap
let mut heap: GenericFibonacciHeap<i32> = GenericFibonacciHeap::new();
let node1 = heap.insert(10).unwrap();
let node2 = heap.insert(5).unwrap();
assert_eq!(heap.extract_min(), Some(5));
heap.decrease_key(&node1, 3).unwrap();
assert_eq!(heap.extract_min(), Some(3));
// Using type alias for i32
let mut heap_i32 = FibonacciHeapI32::new();
heap_i32.insert(42).unwrap();Structs§
- Generic
Fibonacci Heap - A Fibonacci Heap data structure with generic type support
- Into
Iter - Consuming iterator that yields keys in ascending order.
- Node
- A node in the Fibonacci Heap.
Enums§
- Heap
Error - Error types for Fibonacci Heap operations
Traits§
- HeapKey
- Trait for types that can be used as keys in Fibonacci Heap
- NodeRef
- Trait for node reference abstraction.
Type Aliases§
- Fibonacci
Heap - Type aliases for backward compatibility and convenience
- Fibonacci
Heap Char - Fibonacci
Heap F32 - Fibonacci
Heap F64 - Fibonacci
Heap I8 - Fibonacci
Heap I16 - Fibonacci
Heap I32 - Fibonacci
Heap I64 - Fibonacci
Heap I128 - Fibonacci
HeapI Size - Fibonacci
Heap U8 - Fibonacci
Heap U16 - Fibonacci
Heap U32 - Fibonacci
Heap U64 - Fibonacci
Heap U128 - Fibonacci
HeapU Size - Heap
Result - Result type for heap operations