diff --git a/wrapped-mutex/mutex.go b/wrapped-mutex/mutex.go new file mode 100644 index 0000000..6563842 --- /dev/null +++ b/wrapped-mutex/mutex.go @@ -0,0 +1,30 @@ +package wrappedmutex + +import "sync" + +type Mutex[T any] struct { + wrapped T + lock sync.Mutex +} + +func New[T any](wrapped T) Mutex[T] { + return Mutex[T]{ + wrapped: wrapped, + } +} + +func (m *Mutex[T]) Lock() { + m.lock.Lock() +} + +func (m *Mutex[T]) TryLock() bool { + return m.lock.TryLock() +} + +func (m *Mutex[T]) Unlock() { + m.lock.Unlock() +} + +func (m *Mutex[T]) Get() *T { + return &m.wrapped +}