summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-structr/util.go
blob: 84c98074d9ce2108587420e0358dd10ed0a3fa5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package structr

import "unsafe"

// once only executes 'fn' once.
func once(fn func()) func() {
	var once int32
	return func() {
		if once != 0 {
			return
		}
		once = 1
		fn()
	}
}

// eface_data returns the data ptr from an empty interface.
func eface_data(a any) unsafe.Pointer {
	type eface struct{ _, data unsafe.Pointer }
	return (*eface)(unsafe.Pointer(&a)).data
}