High

Struct High 

Source
pub struct High;
Expand description

High is an internal type which is only exposed in docs due to it’s usage in the PartitionRead trait.

Trait Implementations§

Source§

impl Clone for High

Source§

fn clone(&self) -> High

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for High

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for High

Source§

fn default() -> High

Returns the “default value” for a type. Read more
Source§

impl PartialEq for High

Source§

fn eq(&self, other: &High) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<B: Deref<Target = [u8]>> PartitionRead<High> for CowSplinter<B>

Source§

fn cardinality(&self) -> usize

the total number of values accessible via this partition.
Source§

fn is_empty(&self) -> bool

returns true if this partition is empty
Source§

fn contains(&self, value: u32) -> bool

returns true if this partition contains the given value
Source§

fn position(&self, value: u32) -> Option<usize>

returns the 0-based position of the value in the partition if it exists, otherwise returns None.
Source§

fn rank(&self, value: u32) -> usize

returns the number of values contained in this partition up to and including the value.
Source§

fn select(&self, idx: usize) -> Option<u32>

returns the value at position idx.
Source§

fn last(&self) -> Option<u32>

returns the last value in the partition
Source§

fn iter(&self) -> impl Iterator<Item = u32>

returns an iterator over all values in this partition
Source§

fn range<R>(&self, range: R) -> impl Iterator<Item = L::Value>
where R: RangeBounds<L::Value> + Clone,

returns an iterator over all values in this partition restricted by the provided range.
Source§

impl PartitionRead<High> for Splinter

Source§

fn cardinality(&self) -> usize

Returns the total number of elements in this splinter.

§Examples
use splinter_rs::{Splinter, PartitionRead, PartitionWrite};

let mut splinter = Splinter::EMPTY;
assert_eq!(splinter.cardinality(), 0);

let splinter = Splinter::from_iter([100, 200, 300]);
assert_eq!(splinter.cardinality(), 3);
Source§

fn is_empty(&self) -> bool

Returns true if this splinter contains no elements.

§Examples
use splinter_rs::{Splinter, PartitionRead, PartitionWrite};

let mut splinter = Splinter::EMPTY;
assert!(splinter.is_empty());

let splinter = Splinter::from_iter([42]);
assert!(!splinter.is_empty());
Source§

fn contains(&self, value: u32) -> bool

Returns true if this splinter contains the specified value.

§Examples
use splinter_rs::{Splinter, PartitionRead, PartitionWrite};

let splinter = Splinter::from_iter([42, 1337]);

assert!(splinter.contains(42));
assert!(splinter.contains(1337));
assert!(!splinter.contains(999));
Source§

fn position(&self, value: u32) -> Option<usize>

Returns the 0-based position of the value in this splinter if it exists.

This method searches for the given value in the splinter and returns its position in the sorted sequence of all elements. If the value doesn’t exist, returns None.

§Examples
use splinter_rs::{Splinter, PartitionRead, PartitionWrite};

let splinter = Splinter::from_iter([10, 20, 30]);

assert_eq!(splinter.position(10), Some(0));
assert_eq!(splinter.position(20), Some(1));
assert_eq!(splinter.position(30), Some(2));
assert_eq!(splinter.position(25), None); // doesn't exist
Source§

fn rank(&self, value: u32) -> usize

Returns the number of elements in this splinter that are less than or equal to the given value.

This is also known as the “rank” of the value in the sorted sequence of all elements.

§Examples
use splinter_rs::{Splinter, PartitionRead, PartitionWrite};

let splinter = Splinter::from_iter([10, 20, 30]);

assert_eq!(splinter.rank(5), 0);   // No elements <= 5
assert_eq!(splinter.rank(10), 1);  // One element <= 10
assert_eq!(splinter.rank(25), 2);  // Two elements <= 25
assert_eq!(splinter.rank(30), 3);  // Three elements <= 30
assert_eq!(splinter.rank(50), 3);  // Three elements <= 50
Source§

fn select(&self, idx: usize) -> Option<u32>

Returns the element at the given index in the sorted sequence, or None if the index is out of bounds.

The index is 0-based, so select(0) returns the smallest element.

§Examples
use splinter_rs::{Splinter, PartitionRead, PartitionWrite};

let splinter = Splinter::from_iter([100, 50, 200]);

assert_eq!(splinter.select(0), Some(50));   // Smallest element
assert_eq!(splinter.select(1), Some(100));  // Second smallest
assert_eq!(splinter.select(2), Some(200));  // Largest element
assert_eq!(splinter.select(3), None);       // Out of bounds
Source§

fn last(&self) -> Option<u32>

Returns the largest element in this splinter, or None if it’s empty.

§Examples
use splinter_rs::{Splinter, PartitionRead, PartitionWrite};

let mut splinter = Splinter::EMPTY;
assert_eq!(splinter.last(), None);

let splinter = Splinter::from_iter([100, 50, 200]);

assert_eq!(splinter.last(), Some(200));
Source§

fn iter(&self) -> impl Iterator<Item = u32>

Returns an iterator over all elements in ascending order.

§Examples
use splinter_rs::{Splinter, PartitionRead, PartitionWrite};

let splinter = Splinter::from_iter([300, 100, 200]);

let values: Vec<u32> = splinter.iter().collect();
assert_eq!(values, vec![100, 200, 300]);
Source§

fn range<R>(&self, range: R) -> impl Iterator<Item = L::Value>
where R: RangeBounds<L::Value> + Clone,

returns an iterator over all values in this partition restricted by the provided range.
Source§

impl<B: Deref<Target = [u8]>> PartitionRead<High> for SplinterRef<B>

Source§

fn cardinality(&self) -> usize

the total number of values accessible via this partition.
Source§

fn is_empty(&self) -> bool

returns true if this partition is empty
Source§

fn contains(&self, value: u32) -> bool

returns true if this partition contains the given value
Source§

fn position(&self, value: u32) -> Option<usize>

returns the 0-based position of the value in the partition if it exists, otherwise returns None.
Source§

fn rank(&self, value: u32) -> usize

returns the number of values contained in this partition up to and including the value.
Source§

fn select(&self, idx: usize) -> Option<u32>

returns the value at position idx.
Source§

fn last(&self) -> Option<u32>

returns the last value in the partition
Source§

fn iter(&self) -> impl Iterator<Item = u32>

returns an iterator over all values in this partition
Source§

fn range<R>(&self, range: R) -> impl Iterator<Item = L::Value>
where R: RangeBounds<L::Value> + Clone,

returns an iterator over all values in this partition restricted by the provided range.
Source§

impl<B: Deref<Target = [u8]>> PartitionWrite<High> for CowSplinter<B>

Source§

fn insert(&mut self, value: u32) -> bool

Inserts the value into the partition unless it already exists. Returns true if the insertion occurred, false otherwise.
Source§

fn remove(&mut self, value: u32) -> bool

Removes the value from the partition if it exists. Returns true if the removal occurred, false otherwise.
Source§

fn remove_range<R: RangeBounds<u32>>(&mut self, values: R)

Removes a range of values from the partition.
Source§

impl PartitionWrite<High> for Splinter

Source§

fn insert(&mut self, value: u32) -> bool

Inserts a value into this splinter.

Returns true if the value was newly inserted, or false if it was already present.

§Examples
use splinter_rs::{Splinter, PartitionWrite, PartitionRead};

let mut splinter = Splinter::EMPTY;

// First insertion returns true
assert!(splinter.insert(42));
assert_eq!(splinter.cardinality(), 1);

// Second insertion of same value returns false
assert!(!splinter.insert(42));
assert_eq!(splinter.cardinality(), 1);

// Different value returns true
assert!(splinter.insert(100));
assert_eq!(splinter.cardinality(), 2);
Source§

fn remove(&mut self, value: u32) -> bool

Removes a value from this splinter.

Returns true if the value was present and removed, or false if it was not present.

§Examples
use splinter_rs::{Splinter, PartitionWrite, PartitionRead};

let mut splinter = Splinter::from_iter([42, 100]);
assert_eq!(splinter.cardinality(), 2);

// Remove existing value
assert!(splinter.remove(42));
assert_eq!(splinter.cardinality(), 1);
assert!(!splinter.contains(42));
assert!(splinter.contains(100));

// Remove non-existent value
assert!(!splinter.remove(999));
assert_eq!(splinter.cardinality(), 1);
Source§

fn remove_range<R: RangeBounds<u32>>(&mut self, values: R)

Removes a range of values from this splinter.

This method removes all values that fall within the specified range bounds. The range can be inclusive, exclusive, or half-bounded using standard Rust range syntax.

§Examples
use splinter_rs::{Splinter, PartitionRead, PartitionWrite};

let mut splinter = Splinter::from_iter(1..=10);

// Remove values 3 through 7 (inclusive)
splinter.remove_range(3..=7);
assert!(!splinter.contains(5));
assert!(splinter.contains(2));
assert!(splinter.contains(8));

// Remove from 9 onwards
splinter.remove_range(9..);
assert!(!splinter.contains(9));
assert!(!splinter.contains(10));
assert!(splinter.contains(8));
Source§

impl Copy for High

Source§

impl Eq for High

Source§

impl StructuralPartialEq for High

Auto Trait Implementations§

§

impl Freeze for High

§

impl RefUnwindSafe for High

§

impl Send for High

§

impl Sync for High

§

impl Unpin for High

§

impl UnwindSafe for High

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.