summaryrefslogtreecommitdiff
path: root/vendor/fixedbitset/src/range.rs
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-02 18:36:06 -0600
committermo khan <mo@mokhan.ca>2025-07-02 18:36:06 -0600
commit8cdfa445d6629ffef4cb84967ff7017654045bc2 (patch)
tree22f0b0907c024c78d26a731e2e1f5219407d8102 /vendor/fixedbitset/src/range.rs
parent4351c74c7c5f97156bc94d3a8549b9940ac80e3f (diff)
chore: add vendor directory
Diffstat (limited to 'vendor/fixedbitset/src/range.rs')
-rw-r--r--vendor/fixedbitset/src/range.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/vendor/fixedbitset/src/range.rs b/vendor/fixedbitset/src/range.rs
new file mode 100644
index 00000000..9b385c42
--- /dev/null
+++ b/vendor/fixedbitset/src/range.rs
@@ -0,0 +1,45 @@
+use core::ops::{Range, RangeFrom, RangeFull, RangeTo};
+
+// Taken from https://github.com/bluss/odds/blob/master/src/range.rs.
+
+/// **IndexRange** is implemented by Rust's built-in range types, produced
+/// by range syntax like `..`, `a..`, `..b` or `c..d`.
+pub trait IndexRange<T = usize> {
+ #[inline]
+ /// Start index (inclusive)
+ fn start(&self) -> Option<T> {
+ None
+ }
+ #[inline]
+ /// End index (exclusive)
+ fn end(&self) -> Option<T> {
+ None
+ }
+}
+
+impl<T> IndexRange<T> for RangeFull {}
+
+impl<T: Copy> IndexRange<T> for RangeFrom<T> {
+ #[inline]
+ fn start(&self) -> Option<T> {
+ Some(self.start)
+ }
+}
+
+impl<T: Copy> IndexRange<T> for RangeTo<T> {
+ #[inline]
+ fn end(&self) -> Option<T> {
+ Some(self.end)
+ }
+}
+
+impl<T: Copy> IndexRange<T> for Range<T> {
+ #[inline]
+ fn start(&self) -> Option<T> {
+ Some(self.start)
+ }
+ #[inline]
+ fn end(&self) -> Option<T> {
+ Some(self.end)
+ }
+}