mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2024-12-08 06:32:22 +01:00
b93087ceb4
* updates go-structr and go-mangler to no longer rely on modern-go/reflect2 (*phew* now we're go1.23 safe) * update go-structr version * bump go-structr to improve memory usage (v. slightly) in certain conditions
22 lines
374 B
Go
22 lines
374 B
Go
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
|
|
}
|