Generic Set[T] на мапе с мьютексом

Код-ревьюMiddle15 минпроверка — Спринт08-t024

Нужно отрефакторить generic-коллекцию Set[T] на мапе с мьютексом: найти ошибки в блокировках, итерации, инициализации и сигнатурах и предложить корректную потокобезопасную версию.

Как на собесе: 15 минут, ищи всё — гонки, утечки, ошибки, безопасность, стиль. Ссылайся на строки.

review.gogo
1type Set[T any] struct {2	elems map[T]struct{}3	mu    sync.Mutex4}5 6func NewSet[T any]() Set[T] {7	return Set[T]{8		elems: make(map[T]struct{}),9	}10}11 12func (s Set[T]) Has(v T) bool {13	var rw sync.RWMutex14	rw.RLock()15	defer rw.RUnlock()16	_, ok := s.elems[v]17	return ok18}19 20func (s Set[T]) Intersection(other Set[T]) map[T]struct{} {21	var out map[T]struct{}22	for key, _ := range s {23		if other.Has(key) {24			out[key] = struct{}{}25		}26	}27	return out28}
⌘ Enter — проверить