lis

Crates.iolis
lib.rslis
version1.0.0
sourcesrc
created_at2018-07-29 18:57:36.215349
updated_at2019-08-05 18:42:10.678436
descriptionLongest increasing subsequence algorithm
homepage
repositoryhttps://github.com/axelf4/lis
max_upload_size
id76507
size18,227
Axel Forsman (axelf4)

documentation

README

Logo

lis

Rust implementation of the Longest increasing subsequence algorithm.

Build Status Documentation

Also provides a function for diffing lists, that makes use of the LIS algorithm.

Examples

The main trait exposed by this crate is LisExt, which is implemented for, inter alia, arrays:

use lis::LisExt;
assert_eq!([2, 1, 4, 3, 5].longest_increasing_subsequence(), [1, 3, 4]);

Diffing two lists can be done with diff_by_key:

use lis::{diff_by_key, DiffCallback};
struct Cb;
impl DiffCallback<usize, usize> for Cb {
    fn inserted(&mut self, new: usize) {
        assert_eq!(new, 2);
    }
    fn removed(&mut self, old: usize) {}
    fn unchanged(&mut self, old: usize, new: usize) {
        assert_eq!(old, 1);
        assert_eq!(new, 1);
    }
}
diff_by_key(1..2, |x| x, 1..3, |x| x, &mut Cb);
Commit count: 17

cargo fmt