/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
cloud/tasks/common/stringset.go
106 строк
2 KB
Sergei
issue-1559: [Disk Manager] Add GetTaskError method to scheduler, verify filesystem scrubbing (#5685)
09 апр 2026, 12:53
Не верифицирован
09 апр 2026, 12:53
8b801f5
Код
Авторство
О чём код?
package common //////////////////////////////////////////////////////////////////////////////// type StringSet struct { vals map[string]struct{} } func (s *StringSet) Has(val string) bool { if s.vals != nil { _, ok := s.vals[val] return ok } return false } func (s *StringSet) Equals(other StringSet) bool { if s.Size() != other.Size() { return false } for v := range s.vals { if !other.Has(v) { return false } } return true } func (s *StringSet) Vals() map[string]struct{} { return s.vals } func (s *StringSet) Size() int { return len(s.vals) } func (s *StringSet) Add(val string) { if s.vals == nil { s.vals = make(map[string]struct{}) } s.vals[val] = struct{}{} } func (s *StringSet) Remove(val string) { if s.vals != nil { delete(s.vals, val) } } func (s *StringSet) List() []string { if s.vals == nil { return []string{} } vals := make([]string, 0, len(s.vals)) for v := range s.vals { vals = append(vals, v) } return vals } func (s *StringSet) DeepCopy() StringSet { return NewStringSet(s.List()...) } func (s *StringSet) Subtract(other StringSet) StringSet { result := NewStringSet() for v := range s.vals { if !other.Has(v) { result.Add(v) } } return result } func (s *StringSet) Intersection(other StringSet) StringSet { result := NewStringSet() for v := range s.vals { if other.Has(v) { result.Add(v) } } return result } func NewStringSet(vals ...string) StringSet { if len(vals) == 0 { return StringSet{} } set := StringSet{ vals: make(map[string]struct{}), } for _, val := range vals { set.Add(val) } return set }