aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrégoire Duchêne <gduchene@awhk.org>2022-12-03 11:53:48 +0000
committerGrégoire Duchêne <gduchene@awhk.org>2022-12-03 11:53:48 +0000
commit5b88af5109405a51b0c6f8237016707604109ca7 (patch)
tree7a3f5a6086228ea69e88b17ab4c8955e5f11d5ef
parent66757999fb5aa554d1277a21ba59a5f2e6ca0271 (diff)
Add NoCopy to flag types as not to be copied
See https://github.com/golang/go/issues/8005#issuecomment-190753527 for more details.
-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() {}