#binary-search-tree #layout #bfs #array #sorting #slice-ext

eytzinger

This crate implements the "eytzinger" (aka BFS) array layout

5 stable releases

Uses old Rust 2015

1.1.2 Nov 21, 2025
1.1.1 Mar 3, 2021
1.0.1 Nov 18, 2017
1.0.0 Nov 15, 2017

#841 in Algorithms

Download history 262/week @ 2025-09-11 865/week @ 2025-09-18 687/week @ 2025-09-25 210/week @ 2025-10-02 657/week @ 2025-10-09 501/week @ 2025-10-16 904/week @ 2025-10-23 786/week @ 2025-10-30 557/week @ 2025-11-06 1122/week @ 2025-11-13 1016/week @ 2025-11-20 617/week @ 2025-11-27 1180/week @ 2025-12-04 746/week @ 2025-12-11 504/week @ 2025-12-18 230/week @ 2025-12-25

2,828 downloads per month
Used in eytzinger-map

MIT license

35KB
549 lines

This crate implements the "eytzinger" (aka BFS) array layout where a binary search tree is stored by layer (instead of as a sorted array). This can have significant performance benefits (see Khuong, Paul-Virak, and Pat Morin. "Array layouts for comparison-based searching.").

Usage

use eytzinger::SliceExt;
let mut data = [0, 1, 2, 3, 4, 5, 6];
data.eytzingerize(&mut eytzinger::permutation::InplacePermutator);
assert_eq!(data, [3, 1, 5, 0, 2, 4, 6]);
assert_eq!(data.eytzinger_search(&5), Some(2));
assert_eq!(data.eytzinger_search_by(|x| x.cmp(&6)), Some(6));

Dependencies