set

package
v1.92.4-sing-box-1.13-... Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 8, 2026 License: BSD-3-Clause Imports: 10 Imported by: 0

Documentation

Overview

Package set contains set types.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Handle

type Handle struct {
	// contains filtered or unexported fields
}

Handle is an opaque comparable value that's used as the map key in a HandleSet.

func NewHandle

func NewHandle() Handle

NewHandle returns a new handle value.

type HandleSet

type HandleSet[T any] map[Handle]T

HandleSet is a set of T.

It is not safe for concurrent use.

func (*HandleSet[T]) Add

func (s *HandleSet[T]) Add(e T) Handle

Add adds the element (map value) e to the set.

It returns a new handle (map key) with which e can be removed, using a map delete or the HandleSet.Delete method.

func (HandleSet[T]) Delete

func (s HandleSet[T]) Delete(h Handle)

Delete removes the element with handle h from the set.

type IntSet

type IntSet[T constraints.Integer] struct {
	// contains filtered or unexported fields
}

IntSet is a set optimized for integer values close to zero or set of integers that are close in value.

func IntsOf

func IntsOf[T constraints.Integer](slice ...T) IntSet[T]

IntsOf constructs an IntSet with the provided elements.

func (*IntSet[T]) Add

func (s *IntSet[T]) Add(e T)

Add adds e to the set.

When storing a IntSet in a map as a value type, it is important to re-assign the map entry after calling Add or Delete, as the IntSet's representation may change.

func (*IntSet[T]) AddSeq

func (s *IntSet[T]) AddSeq(seq iter.Seq[T])

AddSeq adds the values from seq to the set.

func (IntSet[T]) Clone

func (s IntSet[T]) Clone() IntSet[T]

Clone returns a copy of s that doesn't alias the original.

func (IntSet[T]) Contains

func (s IntSet[T]) Contains(e T) bool

Contains reports whether e is in the set.

func (*IntSet[T]) Delete

func (s *IntSet[T]) Delete(e T)

Delete removes e from the set.

When storing a IntSet in a map as a value type, it is important to re-assign the map entry after calling Add or Delete, as the IntSet's representation may change.

func (*IntSet[T]) DeleteSeq

func (s *IntSet[T]) DeleteSeq(seq iter.Seq[T])

DeleteSeq deletes the values in seq from the set.

func (IntSet[T]) Equal

func (s IntSet[T]) Equal(other IntSet[T]) bool

Equal reports whether s is equal to other.

func (IntSet[T]) Len

func (s IntSet[T]) Len() int

Len reports the number of elements in the set.

func (IntSet[T]) Values

func (s IntSet[T]) Values() iter.Seq[T]

Values returns an iterator over the elements of the set. The iterator will yield the elements in no particular order.

type Set

type Set[T comparable] map[T]struct{}

Set is a set of T.

func Of

func Of[T comparable](slice ...T) Set[T]

Of returns a new set constructed from the elements in slice.

func SetOf

func SetOf[T comparable](slice []T) Set[T]

SetOf returns a new set constructed from the elements in slice.

func (Set[T]) Add

func (s Set[T]) Add(e T)

Add adds e to s.

func (Set[T]) AddSet

func (s Set[T]) AddSet(es Set[T])

AddSet adds each element of es to s.

func (Set[T]) AddSlice

func (s Set[T]) AddSlice(es []T)

AddSlice adds each element of es to s.

func (Set[T]) Clone

func (s Set[T]) Clone() Set[T]

Clone returns a new set cloned from the elements in s.

func (Set[T]) Contains

func (s Set[T]) Contains(e T) bool

Contains reports whether s contains e.

func (Set[T]) Delete

func (s Set[T]) Delete(e T)

Delete removes e from the set.

func (Set[T]) Equal

func (s Set[T]) Equal(other Set[T]) bool

Equal reports whether s is equal to other.

func (Set[T]) Len

func (s Set[T]) Len() int

Len reports the number of items in s.

func (*Set[T]) Make

func (s *Set[T]) Make()

Make lazily initializes the map pointed to by s to be non-nil.

func (Set[T]) MarshalJSON

func (s Set[T]) MarshalJSON() ([]byte, error)

func (Set[T]) Slice

func (s Set[T]) Slice() []T

Slice returns the elements of the set as a slice. The elements will not be in any particular order.

func (*Set[T]) UnmarshalJSON

func (s *Set[T]) UnmarshalJSON(buf []byte) error

type Slice

type Slice[T comparable] struct {
	// contains filtered or unexported fields
}

Slice is a set of elements tracked in a slice of unique elements.

func (*Slice[T]) Add

func (ss *Slice[T]) Add(vs ...T)

Add adds each element in vs to the set. The amortized cost is O(1) per element.

func (*Slice[T]) AddSlice

func (ss *Slice[T]) AddSlice(vs views.Slice[T])

AddSlice adds all elements in vs to the set.

func (*Slice[T]) Contains

func (ss *Slice[T]) Contains(v T) bool

Contains reports whether v is in the set. The amortized cost is O(1).

func (*Slice[T]) Len

func (ss *Slice[T]) Len() int

Len returns the number of elements in the set.

func (*Slice[T]) Remove

func (ss *Slice[T]) Remove(v T)

Remove removes v from the set. The cost is O(n).

func (*Slice[T]) Slice

func (ss *Slice[T]) Slice() views.Slice[T]

Slice returns a view of the underlying slice. The elements are in order of insertion. The returned value is only valid until ss is modified again.

type SmallSet

type SmallSet[T comparable] struct {
	// contains filtered or unexported fields
}

SmallSet is a set that is optimized for reducing memory overhead when the expected size of the set is 0 or 1 elements.

The zero value of SmallSet is a usable empty set.

When storing a SmallSet in a map as a value type, it is important to re-assign the map entry after calling Add or Delete, as the SmallSet's representation may change.

Copying a SmallSet by value may alias the previous value. Use the Clone method to create a new SmallSet with the same contents.

func (*SmallSet[T]) Add

func (s *SmallSet[T]) Add(e T)

Add adds e to the set.

When storing a SmallSet in a map as a value type, it is important to re-assign the map entry after calling Add or Delete, as the SmallSet's representation may change.

func (SmallSet[T]) Clone

func (s SmallSet[T]) Clone() SmallSet[T]

Clone returns a copy of s that doesn't alias the original.

func (SmallSet[T]) Contains

func (s SmallSet[T]) Contains(e T) bool

Contains reports whether e is in the set.

func (*SmallSet[T]) Delete

func (s *SmallSet[T]) Delete(e T)

Delete removes e from the set.

When storing a SmallSet in a map as a value type, it is important to re-assign the map entry after calling Add or Delete, as the SmallSet's representation may change.

func (SmallSet[T]) Len

func (s SmallSet[T]) Len() int

Len reports the number of elements in the set.

func (SmallSet[T]) SoleElement

func (s SmallSet[T]) SoleElement() (e T, ok bool)

SoleElement returns the single value in the set, if the set has exactly one element.

If the set is empty or has more than one element, ok will be false and e will be the zero value of T.

func (SmallSet[T]) Values

func (s SmallSet[T]) Values() iter.Seq[T]

Values returns an iterator over the elements of the set. The iterator will yield the elements in no particular order.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL