Function libnetrangemerge::merge_ranges_slice[][src]

pub fn merge_ranges_slice<R: Range>(ranges: &mut [RangeInterest<R>]) -> usize

Merges all provided ranges in place, returning the number of valid ranges.

As this operation is performed in place, after the operation is complete some number of ranges at the end of the input slice may no longer be valid. Attempting to access them in any way may panic.

This function does not allocate and is no_std compatible.

Example

use libnetrangemerge::{RangeInterest, IpRange, merge_ranges_slice};

let mut ranges: Vec<RangeInterest<IpRange>> = vec![
    RangeInterest::new("127.0.0.8/29".parse().unwrap(), false),
    RangeInterest::new("127.0.0.16/29".parse().unwrap(), true),
    RangeInterest::new("0.0.0.0/0".parse().unwrap(), false),
];

let len = merge_ranges_slice(&mut ranges);

ranges.truncate(len);