aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net.go2
-rw-r--r--util.go11
2 files changed, 13 insertions, 0 deletions
diff --git a/net.go b/net.go
index 040fe66..af8e4cd 100644
--- a/net.go
+++ b/net.go
@@ -32,6 +32,8 @@ type PipeListener struct {
closed int32
conns chan net.Conn
done chan struct{}
+
+ _ NoCopy
}
var _ net.Listener = &PipeListener{}
diff --git a/util.go b/util.go
index d6f1985..daf2817 100644
--- a/util.go
+++ b/util.go
@@ -10,3 +10,14 @@ func Must[T any](val T, err error) T {
}
return val
}
+
+// NoCopy flags a type that embeds it as not to be copied. Go does not
+// prevent values from being copied, but ‘go vet’ will pick it up and
+// signal it, which can then be caught by many CI/CD pipelines.
+//
+// See https://github.com/golang/go/issues/8005#issuecomment-190753527
+// for more details.
+type NoCopy struct{}
+
+func (*NoCopy) Lock() {}
+func (*NoCopy) Unlock() {}