package syncmap

import 

type SyncMap[ comparable,  any] struct {
	_map *sync.Map
}

func [ comparable,  any]() SyncMap[, ] {
	return SyncMap[, ]{
		_map: &sync.Map{},
	}
}

func ( SyncMap[, ]) ( ,  ) {
	._map.Store(, )
}

func ( SyncMap[, ]) ( ) ( ,  bool) {
	,  := ._map.Load()
	if ! {
		return , false
	}
	return .(), true
}

func ( SyncMap[, ]) ( ) ( ) {
	,  := .Lookup()
	return 
}

func ( SyncMap[, ]) ( ) {
	._map.Delete()
}

func ( SyncMap[, ]) ( func( ,  ) bool) {
	._map.Range(func(,  any) bool {
		return (.(), .())
	})
}