Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/techno-coder/strutters
Rust library for data structures
https://github.com/techno-coder/strutters
data-structures graph graph-algorithms no-std rust rust-library segment-tree shortest-paths
Last synced: about 2 months ago
JSON representation
Rust library for data structures
- Host: GitHub
- URL: https://github.com/techno-coder/strutters
- Owner: Techno-coder
- License: mit
- Created: 2018-06-20T11:01:02.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-06-24T07:37:17.000Z (over 6 years ago)
- Last Synced: 2024-10-28T16:56:03.938Z (3 months ago)
- Topics: data-structures, graph, graph-algorithms, no-std, rust, rust-library, segment-tree, shortest-paths
- Language: Rust
- Homepage:
- Size: 74.2 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# strutters
Rust library for data structures [WIP]## Features
- `no_std` compatible. Enable with `default-features = false`. Requires `alloc` crate.
- No clone/copy required for the main data type that is to be stored (may change in the future!)## Data structures
- Segment tree
- Vanilla
- Lazy propagation
- Graph
- Adjacency list
- Undirected
- Tree
- Implicit (array based)
- Sparse table
- Index sparse table
- Fully associative sparse table
- Disjoint set
## Algorithms
- Graph
- Shortest path
- Dijkstra
- Floyd-Warshall
- Traversal
- Breadth first
- Depth first
- Minimum spanning tree
- Kruskal's algorithm
- Math
- Greatest common divisor## Specific details
For segment trees, a closure needs to be implemented that implements `AssociativeOperator`. This closure produces the parent node of its child nodes. Some example associative operators are included in `tree/mod.rs`.For the lazy propagation segment tree, a closure needs to be implemented that implements `DeltaSifter`. This closure produces the correct node value from its current value and its current delta value. Additionally, the node will be updated from its child nodes once this is executed.