github.com/segmentio/encoding@v0.4.0/thrift/unsafe.go (about) 1 package thrift 2 3 import ( 4 "reflect" 5 "unsafe" 6 ) 7 8 // typeID is used as key in encoder and decoder caches to enable using 9 // the optimize runtime.mapaccess2_fast64 function instead of the more 10 // expensive lookup if we were to use reflect.Type as map key. 11 // 12 // typeID holds the pointer to the reflect.Type value, which is unique 13 // in the program. 14 type typeID struct{ ptr unsafe.Pointer } 15 16 func makeTypeID(t reflect.Type) typeID { 17 return typeID{ 18 ptr: (*[2]unsafe.Pointer)(unsafe.Pointer(&t))[1], 19 } 20 } 21 22 func unsafeBytesToString(b []byte) string { 23 return *(*string)(unsafe.Pointer(&b)) 24 }