func SecureStructSlice(size int) (*memguard.LockedBuffer, []Secure) {
	if size < 1 {
		return nil, nil
	}
	s := new(Secure)
	b := memguard.NewBuffer(int(unsafe.Sizeof(*s)) * size)
	var sl = struct {
		addr uintptr
		len  int
		cap  int
	}{uintptr(unsafe.Pointer(&b.Bytes()[0])), size, size}
	return b, *(*[]Secure)(unsafe.Pointer(&sl))
}
SecureStructSlice takes a length and returns a slice of Secure struct values of that length.
package casting
import (
	"unsafe"
	"github.com/awnumar/memguard"
)
type Secure struct {
	Key       [32]byte
	Salt      [2]uint64
	Counter   uint64
	Something bool
}
func ByteArray10() (*memguard.LockedBuffer, *[10]byte) {
	b := memguard.NewBuffer(10)
	return b, (*[10]byte)(unsafe.Pointer(&b.Bytes()[0]))
}
func Uint64Array4() (*memguard.LockedBuffer, *[4]uint64) {
	b := memguard.NewBuffer(32)
	return b, (*[4]uint64)(unsafe.Pointer(&b.Bytes()[0]))
}
func SecureStruct() (*memguard.LockedBuffer, *Secure) {
	s := new(Secure)
	b := memguard.NewBuffer(int(unsafe.Sizeof(*s)))
	return b, (*Secure)(unsafe.Pointer(&b.Bytes()[0]))
}
func SecureStructArray() (*memguard.LockedBuffer, *[2]Secure) {
	s := new(Secure)
	b := memguard.NewBuffer(int(unsafe.Sizeof(*s)) * 2)
	secureArray := (*[2]Secure)(unsafe.Pointer(&b.Bytes()[0]))
	return b, secureArray
}