INNER CODE UNIT · Rust
free_range
gfx-rs/gfx · src/auxil/range-alloc/src/lib.rs:86
pub fn free_range(&mut self, range: Range<T>) {
assert!(self.initial_range.start <= range.start && range.end <= self.initial_range.end);
assert!(range.start < range.end);
// Get insertion position.
let i = self
.free_ranges
.iter()
.position(|r| r.start > range.start)
.unwrap_or(self.free_ranges.len());
// Try merging with neighboring ranges in the free list.
// Before: |left|-(range)-|right|
if i > 0 && range.start == self.free_ranges[i - 1].end {
// Merge with |left|.
self.free_ranges[i - 1].end =
if i < self.free_ranges.len() && range.end == self.free_ranges[i].start {
// Check for possible merge with |left| and |right|.