mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
@@ -1682,14 +1682,42 @@ fn range_to_offset_size<S: RangeBounds<BufferAddress>>(
|
||||
Bound::Unbounded => 0,
|
||||
};
|
||||
let size = match bounds.end_bound() {
|
||||
Bound::Included(&bound) => BufferSize::new(bound + 1 - offset),
|
||||
Bound::Excluded(&bound) => BufferSize::new(bound - offset),
|
||||
Bound::Included(&bound) => Some(bound + 1 - offset),
|
||||
Bound::Excluded(&bound) => Some(bound - offset),
|
||||
Bound::Unbounded => None,
|
||||
};
|
||||
}
|
||||
.map(|size| BufferSize::new(size).expect("Buffer slices can not be empty"));
|
||||
|
||||
(offset, size)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::BufferSize;
|
||||
|
||||
#[test]
|
||||
fn range_to_offset_size_works() {
|
||||
assert_eq!(crate::range_to_offset_size(0..2), (0, BufferSize::new(2)));
|
||||
assert_eq!(crate::range_to_offset_size(2..5), (2, BufferSize::new(3)));
|
||||
assert_eq!(crate::range_to_offset_size(..), (0, None));
|
||||
assert_eq!(crate::range_to_offset_size(21..), (21, None));
|
||||
assert_eq!(crate::range_to_offset_size(0..), (0, None));
|
||||
assert_eq!(crate::range_to_offset_size(..21), (0, BufferSize::new(21)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn range_to_offset_size_panics_for_empty_range() {
|
||||
crate::range_to_offset_size(123..123);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn range_to_offset_size_panics_for_unbounded_empty_range() {
|
||||
crate::range_to_offset_size(..0);
|
||||
}
|
||||
}
|
||||
|
||||
trait BufferMappedRangeSlice {
|
||||
fn slice(&self) -> &[u8];
|
||||
fn slice_mut(&mut self) -> &mut [u8];
|
||||
|
||||
Reference in New Issue
Block a user