mirror of
https://github.com/golang/go
synced 2024-11-18 15:24:41 -07:00
f8d1dee965
This library holds onto results with a weak reference, and guarantees that for as long as a result has not been garbage collected it will return the same result for the same key. Change-Id: I4a4528f31bf8bbf18809cbffe95dc93e05d769fe Reviewed-on: https://go-review.googlesource.com/c/tools/+/180845 Reviewed-by: Rebecca Stambler <rstambler@golang.org>
25 lines
773 B
Go
25 lines
773 B
Go
// Copyright 2019 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package memoize
|
|
|
|
// NoCopy is a type with no public methods that will trigger a vet check if it
|
|
// is ever copied.
|
|
// You can embed this in any type intended to be used as a value. This helps
|
|
// avoid accidentally holding a copy of a value instead of the value itself.
|
|
type NoCopy struct {
|
|
noCopy noCopy
|
|
}
|
|
|
|
// noCopy may be embedded into structs which must not be copied
|
|
// after the first use.
|
|
//
|
|
// See https://golang.org/issues/8005#issuecomment-190753527
|
|
// for details.
|
|
type noCopy struct{}
|
|
|
|
// Lock is a no-op used by -copylocks checker from `go vet`.
|
|
func (*noCopy) Lock() {}
|
|
func (*noCopy) Unlock() {}
|