[−][src]Struct sdset::set::SetBuf
An owned, set (akin to String
).
Methods
impl<T> SetBuf<T>
[src]
pub fn new(vec: Vec<T>) -> Result<Self, Error> where
T: Ord,
[src]
T: Ord,
Construct a SetBuf
only if it is sorted and deduplicated.
use sdset::{SetBuf, Error}; let vec = vec![1, 2, 4, 6, 7]; let setbuf = SetBuf::new(vec)?; // this vec is not sorted! let vec = vec![1, 2, 4, 7, 6]; let setbuf = SetBuf::new(vec); assert_eq!(setbuf, Err(Error::NotSort));
pub fn new_unchecked(vec: Vec<T>) -> Self
[src]
Construct a SetBuf
without checking it.
use sdset::{SetBuf, Error}; // this vec is not sorted let vec = vec![1, 2, 4, 7, 6]; // but we can still create a SetBuf, so be careful! let setbuf = SetBuf::new_unchecked(vec);
pub fn as_set(&self) -> &Set<T>
[src]
Return the Set
owned by this SetBuf
.
use sdset::{Set, SetBuf, Error}; let vec = vec![1, 2, 4, 6, 7]; let setbuf = SetBuf::new(vec.clone())?; let set = Set::new(&vec)?; assert_eq!(setbuf.as_set(), set);
pub fn into_vec(self) -> Vec<T>
[src]
Methods from Deref<Target = Set<T>>
pub fn range<K: ?Sized, R>(&self, range: R) -> &Self where
K: Ord,
R: RangeBounds<K>,
T: Borrow<K>,
[src]
K: Ord,
R: RangeBounds<K>,
T: Borrow<K>,
Returns a Set
containing all the values in the given range.
This function uses exponential searching internally because it is verified that the elements are ordered.
use std::ops::Bound::{Excluded, Included}; use sdset::{Set, Error}; let set = Set::new(&[1, 2, 4, 6, 7])?; let subset = set.range(2..=6); assert_eq!(subset.as_slice(), &[2, 4, 6]); let subset = set.range(3..5); assert_eq!(subset.as_slice(), &[4]); let subset = set.range((Excluded(&2), Included(&7))); assert_eq!(subset.as_slice(), &[4, 6, 7]);
pub fn exponential_search(&self, elem: &T) -> Result<usize, usize> where
T: Ord,
[src]
T: Ord,
Exponential searches this sorted slice for a given element.
If the value is found then Ok
is returned, containing the index of the matching element;
if the value is not found then Err
is returned, containing the index where a
matching element could be inserted while maintaining sorted order.
See the exponential_search
documentation for more details.
pub fn exponential_search_by<F>(&self, f: F) -> Result<usize, usize> where
F: FnMut(&T) -> Ordering,
[src]
F: FnMut(&T) -> Ordering,
Binary searches this sorted slice with a comparator function.
The comparator function should implement an order consistent with the sort order of
the underlying slice, returning an order code that indicates whether its argument
is Less
, Equal
or Greater
the desired target.
If the value is found then Ok
is returned, containing the index of the matching element;
if the value is not found then Err
is returned, containing the index where a
matching element could be inserted while maintaining sorted order.
See the exponential_search_by
documentation for more details.
pub fn exponential_search_by_key<B, F>(
&self,
b: &B,
f: F
) -> Result<usize, usize> where
F: FnMut(&T) -> B,
B: Ord,
[src]
&self,
b: &B,
f: F
) -> Result<usize, usize> where
F: FnMut(&T) -> B,
B: Ord,
Binary searches this sorted slice with a key extraction function.
Assumes that the slice is sorted by the key.
If the value is found then Ok
is returned, containing the index of the matching element;
if the value is not found then Err
is returned, containing the index where a
matching element could be inserted while maintaining sorted order.
See the exponential_search_by
documentation for more details.
pub fn contains(&self, x: &T) -> bool where
T: Ord,
[src]
T: Ord,
Returns true
if the set contains an element with the given value.
This function uses exponential searching internally because it is verified that the elements are ordered.
use sdset::{Set, Error}; let slice = &[1, 2, 4, 6, 7]; let set = Set::new(slice)?; assert!(set.contains(&4));
pub fn to_set_buf(&self) -> SetBuf<T> where
T: Clone,
[src]
T: Clone,
Construct the owning version of the Set
.
use sdset::{Set, SetBuf, Error}; let set = Set::new(&[1, 2, 4, 6, 7])?; let setbuf: SetBuf<_> = set.to_set_buf();
pub fn as_slice(&self) -> &[T]
[src]
Return the slice "inside" of this Set
.
use sdset::{Set, Error}; let slice = &[1, 2, 4, 6, 7]; let set = Set::new(slice)?; assert_eq!(set.as_slice(), slice);
Trait Implementations
impl<T: Clone> Clone for SetBuf<T>
[src]
fn clone(&self) -> SetBuf<T>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<T: Ord> Ord for SetBuf<T>
[src]
fn cmp(&self, other: &SetBuf<T>) -> Ordering
[src]
fn max(self, other: Self) -> Self
1.21.0[src]
Compares and returns the maximum of two values. Read more
fn min(self, other: Self) -> Self
1.21.0[src]
Compares and returns the minimum of two values. Read more
impl<T: Eq> Eq for SetBuf<T>
[src]
impl<T: PartialOrd> PartialOrd<SetBuf<T>> for SetBuf<T>
[src]
fn partial_cmp(&self, other: &SetBuf<T>) -> Option<Ordering>
[src]
fn lt(&self, other: &SetBuf<T>) -> bool
[src]
fn le(&self, other: &SetBuf<T>) -> bool
[src]
fn gt(&self, other: &SetBuf<T>) -> bool
[src]
fn ge(&self, other: &SetBuf<T>) -> bool
[src]
impl<T: PartialEq> PartialEq<SetBuf<T>> for SetBuf<T>
[src]
impl<T> AsRef<Set<T>> for SetBuf<T>
[src]
impl<T> AsRef<[T]> for SetBuf<T>
[src]
impl<T: Hash> Hash for SetBuf<T>
[src]
fn hash<__HT: Hasher>(&self, state: &mut __HT)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl<T> Deref for SetBuf<T>
[src]
impl<T: Debug> Debug for SetBuf<T>
[src]
Auto Trait Implementations
Blanket Implementations
impl<T> From for T
[src]
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,