#tree #collection #tree-node #key #lookup #cs #ftp

splay

A native implementation of a Splay Tree for Rust. Splay Trees are self-balancing binary search trees which adapt dynamically to lookups over time to allow common access patterns to frequently have better than log(n) lookup time.

8 releases

Uses old Rust 2015

0.1.8 Oct 6, 2015
0.1.7 Mar 26, 2015
0.1.5 Feb 20, 2015
0.1.3 Jan 9, 2015
0.1.0 Nov 13, 2014

#2046 in Data structures

MIT license

23KB
519 lines

Splay Trees

Build Status

Documentation

This is an implementation of splay trees written in Rust. This was mostly a proof of concept work, and it ended up working out well!

This repo is provided as a Cargo package, simply adjust your Cargo.toml to include

[dependencies]
splay = "0.1"

This code is all released under the MIT license. The implementation of splaying is largely based on ftp://ftp.cs.cmu.edu/usr/ftp/usr/sleator/splaying/top-down-splay.c


lib.rs:

Contains an implementation of splay trees where each node has a key/value pair to be used in maps and sets. The only requirement is that the key must implement the Ord trait.

Example

use splay::SplayMap;

let mut map = SplayMap::new();
map.insert("foo", "bar");
map.insert("hello", "world");
map.insert("splay", "tree");

for (k, v) in map.into_iter() {
    println!("{} => {}", k, v);
}

No runtime deps