Skip to main content

Set

Struct Set 

Source
pub struct Set(pub VecSet<Value>);
Expand description

Internal Set type that stores unique values

Sets use VecSet internally to maintain uniqueness and sorted order.

  • Rev 1 — u16 revision || VecSet<Value> (length-prefixed). Byte-identical to the legacy on-disk encoding.
  • Rev 2 — optimised envelope (u16 revision || u32_le payload_length), inner VecSet written via the indexed-set prologue past OFFSET_TABLE_MIN_LEN = 8. Walker descent stays zero-allocation through the Wire-repr fast path (skip + borrow).

Tuple Fields§

§0: VecSet<Value>

Implementations§

Source§

impl Set

Source

pub fn walk_revisioned_field_names( wire_revision: u16, ) -> &'static [&'static str]

Field names at the given wire revision in declaration order. Returns an empty slice if the revision is unknown. Generated by the revisioned derive.

Source§

impl Set

Source

pub const REVISION: u16 = 2u16

The revision number of this type, as declared via #[revisioned(revision = N)].

Source§

impl Set

Source

pub fn new() -> Self

Create a new empty set

Source

pub fn len(&self) -> usize

Get the number of elements in the set

Source

pub fn is_empty(&self) -> bool

Check if the set is empty

Source

pub fn first(&self) -> Option<&Value>

Get the first value in the set

Source

pub fn last(&self) -> Option<&Value>

Get the last value in the set

Source

pub fn nth(&self, index: usize) -> Option<&Value>

Get the nth value in the set

Source

pub fn first_mut(&mut self) -> Option<&mut Value>

Get a mutable reference to the first value in the set

Source

pub fn last_mut(&mut self) -> Option<&mut Value>

Get a mutable reference to the last value in the set

Source

pub fn nth_mut(&mut self, index: usize) -> Option<&mut Value>

Get a mutable reference to the nth value in the set

Source

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

Get an iterator over the values in the set

Source

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

Insert a value into the set Returns true if the value was newly inserted

Source

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

Check if the set contains a value

Source

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

Remove a value from the set Returns true if the value was present

Source

pub fn into_literal(self) -> Vec<Expr>

Convert into a literal expression

Source

pub fn union(&self, other: &Set) -> Set

Return the union of this set with another (A ∪ B)

Source

pub fn intersection(&self, other: &Set) -> Set

Return the intersection of this set with another (A ∩ B)

Source

pub fn symmetric_difference(&self, other: &Set) -> Set

Return the symmetric difference (A △ B) - elements in either but not both

Source

pub fn complement(&self, other: &Set) -> Set

Return the relative complement (A \ B) - elements in self but not in other

Source

pub fn normalize(self) -> Self

Rebuild the set so equal values collapse to one entry.

Used after in-place element transformations (for example a .* field VALUE clause)

Source

pub fn flatten(self) -> Set

Flatten nested sets and arrays into a single set

Trait Implementations§

Source§

impl<'de> BorrowDecode<'de, IndexFormat> for Set

Source§

impl<'de> BorrowDecode<'de> for Set

Source§

impl Cast for Set

Source§

fn can_cast(v: &Value) -> bool

Returns true if calling cast on the value will succeed. Read more
Source§

fn cast(v: Value) -> Result<Self, CastError>

Cast a value to the self type.
Source§

impl Clone for Set

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Coerce for Set

Source§

fn can_coerce(v: &Value) -> bool

Returns if calling coerce on the value will succeed or not. Read more
Source§

fn coerce(v: Value) -> Result<Self, CoerceError>

Coerce a value.
Source§

impl Debug for Set

Source§

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

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

impl Default for Set

Source§

fn default() -> Self

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

impl DeserializeRevisioned for Set

Source§

fn deserialize_revisioned<R: Read>(reader: &mut R) -> Result<Self, Error>

Deserializes a new instance of the struct from the specified reader.
Source§

impl Encode for Set

Source§

fn encode<W: Write>(&self, _w: &mut Writer<W>) -> Result<(), EncodeError>

Source§

impl Encode<IndexFormat> for Set

Source§

fn encode<W: Write>(&self, _w: &mut Writer<W>) -> Result<(), EncodeError>

Source§

impl Eq for Set

Source§

impl From<BTreeSet<Value>> for Set

Source§

fn from(set: BTreeSet<Value>) -> Self

Converts to this type from the input type.
Source§

impl From<Set> for Vec<Value>

Source§

fn from(s: Set) -> Self

Converts to this type from the input type.
Source§

impl From<Set> for Set

Source§

fn from(s: Set) -> Self

Converts to this type from the input type.
Source§

impl From<Set> for Value

Source§

fn from(v: Set) -> Self

Converts to this type from the input type.
Source§

impl<T> From<Vec<T>> for Set
where Value: From<T>,

Source§

fn from(v: Vec<T>) -> Self

Converts to this type from the input type.
Source§

impl From<VecSet<Value>> for Set

Source§

fn from(set: VecSet<Value>) -> Self

Converts to this type from the input type.
Source§

impl FromIterator<Value> for Set

Source§

fn from_iter<I: IntoIterator<Item = Value>>(iter: I) -> Self

Creates a value from an iterator. Read more
Source§

impl HasKind for Set

Source§

impl Hash for Set

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl IntoIterator for Set

Source§

type Item = Value

The type of the elements being iterated over.
Source§

type IntoIter = IntoIter<Value>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl Ord for Set

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

fn clamp_to<R>(self, range: R) -> Self
where Self: Sized, R: ClampBounds<Self>,

🔬This is a nightly-only experimental API. (clamp_to)
Restrict a value to a certain range. Read more
Source§

impl PartialEq for Set

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl PartialOrd for Set

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Revisioned for Set

Source§

fn revision() -> u16

Returns the current revision of this type.
Source§

fn type_id() -> TypeId
where Self: 'static,

Returns the type id of this type.
Source§

impl SerializeRevisioned for Set

Source§

fn serialize_revisioned<W: Write>(&self, writer: &mut W) -> Result<(), Error>

Serializes the struct using the specified writer.
Source§

impl SkipCheckRevisioned for Set

Source§

impl SkipRevisioned for Set

Source§

fn skip_revisioned<R: Read>(reader: &mut R) -> Result<(), Error>

Source§

fn skip_revisioned_slice(reader: &mut SliceReader<'_>) -> Result<(), Error>

Consume through bytes backed by SliceReader without allocating a buffer for bulk segments. Read more
Source§

impl StructuralPartialEq for Set

Source§

impl ToSql for Set

Source§

fn fmt_sql(&self, f: &mut String, sql_fmt: SqlFormat)

Format the type to a SQL string.
Source§

fn to_sql(&self) -> String

Convert the type to a SQL string.
Source§

fn to_sql_pretty(&self) -> String

Convert the type to a pretty-printed SQL string with indentation.
Source§

impl TryFrom<Set> for Set

Source§

type Error = Error

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

fn try_from(s: Set) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl WalkRevisioned for Set

Source§

type Walker<'r, R: BorrowedReader + 'r> = SetWalker<'r, R>

Walker produced by walk_revisioned. Read more
Source§

fn walk_revisioned<'r, R: BorrowedReader>( reader: &'r mut R, ) -> Result<Self::Walker<'r, R>, Error>

Read the type’s revision-level prefix and return a walker positioned at the start of the body. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Set

§

impl !UnwindSafe for Set

§

impl Freeze for Set

§

impl Send for Set

§

impl Sync for Set

§

impl Unpin for Set

§

impl UnsafeUnpin for Set

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<U> As for U

Source§

fn as_<T>(self) -> T
where T: CastFrom<U>, U: Sized,

Casts self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. 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<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SetEntry<T> for T
where T: Hash + Eq,

Source§

fn into_owned(self) -> T

Source§

fn equal(&self, other: &T) -> bool

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

Source§

fn is_within(&self, b: &G2) -> bool