Sha256: dbd57cfdac2a72db8c5ce83bf288bcaf33b5ae59adddcd088792a624c4c0e909
Contents?: true
Size: 1.47 KB
Versions: 28
Compression:
Stored size: 1.47 KB
Contents
use core::ops::{Bound, Range, RangeBounds}; pub(crate) fn third<A, B, C>(t: (A, B, C)) -> C { t.2 } pub(crate) fn simplify_range<R>(range: R, len: usize) -> Range<usize> where R: RangeBounds<usize>, { let start = match range.start_bound() { Bound::Unbounded => 0, Bound::Included(&i) if i <= len => i, Bound::Excluded(&i) if i < len => i + 1, bound => panic!("range start {:?} should be <= length {}", bound, len), }; let end = match range.end_bound() { Bound::Unbounded => len, Bound::Excluded(&i) if i <= len => i, Bound::Included(&i) if i < len => i + 1, bound => panic!("range end {:?} should be <= length {}", bound, len), }; if start > end { panic!( "range start {:?} should be <= range end {:?}", range.start_bound(), range.end_bound() ); } start..end } pub(crate) fn try_simplify_range<R>(range: R, len: usize) -> Option<Range<usize>> where R: RangeBounds<usize>, { let start = match range.start_bound() { Bound::Unbounded => 0, Bound::Included(&i) if i <= len => i, Bound::Excluded(&i) if i < len => i + 1, _ => return None, }; let end = match range.end_bound() { Bound::Unbounded => len, Bound::Excluded(&i) if i <= len => i, Bound::Included(&i) if i < len => i + 1, _ => return None, }; if start > end { return None; } Some(start..end) }
Version data entries
28 entries across 28 versions & 1 rubygems