Skip to content

harryscholes/collections-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

collections-rs

Rust data structures, methods and traits:

  • BinaryTree<T>
  • CircularBuffer<T>
  • Dequeue<T>
  • Graph<T>
  • HashMap<K, V>
  • HashSet<T>
  • LinkedList<T>
  • LRUCache<T>
  • MerkleTree
  • MaxHeap<T>
  • MinHeap<T>
  • PriorityQueue<T>
  • Queue<T>
  • SparseVector<T>
  • Stack<T>
  • Vector<T>
  • BufferedChannel<T>
  • UnbufferedChannel<T>
  • OneshotChannel<T>
  • AsyncBufferedChannel<T>

All data structures are implemented from scratch and no data structures from the standard library are used, not even Vec. The dependency graph between the various data structures is:

┌────────────────────────────────┐             
│             Vector             │             
└┬─┬─┬──────────────────────────┬┘             
 │ │ │                         ┌▽─────────────┐
 │ │ │                         │CircularBuffer│
 │ │ │                         └┬──┬──────────┘
 │ │ │┌─────────┐               │  │           
 │ │ ││  Queue  │               │  │           
 │ │ │└△─┬─┬─┬─┬┘               │  │           
 │ │ │ │ │ │ │┌▽───────────────┐│  │           
 │ │ │ │ │ │ ││BuffererdChannel││  │           
 │ │ │ │ │ │ │└────────────────┘│  │           
 │ │ │ │ │ │┌▽─────────────────┐│  │           
 │ │ │ │ │ ││UnbuffererdChannel││  │           
 │ │ │ │ │ │└──────────────────┘│  │           
 │ │ │ │ │┌▽─────────────┐      │  │           
 │ │ │ │ ││OneshotChannel│      │  │           
 │ │ │ │ │└──────────────┘      │  │           
 │ │ │ │┌▽───────────────────┐  │  │           
 │ │ │ ││AsyncBufferedChannel│  │  │           
 │ │ │ │└────────────────────┘  │  │           
 │ │ │┌┴────────────────────────▽─┐│           
 │ │ ││          Dequeue          ││           
 │ │ │└───────────────────────────┘│           
 │ │ │┌────────────────────────────▽─┐         
 │ │ ││            Stack             │         
 │ │ │└──────────────────────────────┘         
 │ │┌▽────────────────────────┐                
 │ ││         HashMap         │                
 │ │└┬────────┬─────┬──┬──┬──△┘                
 │ │┌▽───────┐│     │  │  │  │                 
 │ ││LRUCache││     │  │  │  │                 
 │ │└△───────┘│     │  │  │  │                 
 │ │ │┌───────▽────┐│  │  │  │                 
 │ │ ││SparseVector││  │  │  │                 
 │ │ │└────────────┘│  │  │  │                 
 │ │ │┌─────────────▽─┐│  │  │                 
 │ │ ││     Graph     ││  │  │                 
 │ │ │└───────────────┘│  │  │                 
 │ │ │┌────────────────▽─┐│  │                 
 │ │ ││     HashSet      ││  │                 
 │ │ │└──────────────────┘│  │                 
 │ │ │┌───────────────────▽─┐│                 
 │ │ ││     BinaryTree      ││                 
 │ │ │└─────────────────────┘│                 
 │ │┌┴───────────────────────┴─┐               
 │ ││        LinkedList        │               
 │ │└──────────────────────────┘               
 │┌▽─────────┐                                 
 ││MerkleTree│                                 
 │└──────────┘                                 
┌▽──────────────┐                              
│    MaxHeap    │                              
└┬─────────────┬┘                              
┌▽────────────┐│                               
│PriorityQueue││                               
└─────────────┘│                               
┌──────────────▽─┐                             
│    MinHeap     │                             
└────────────────┘                             

About

Rust data structures

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages