Merge pull request #4336 from Kelimion/slice_to_type

Add `slice.to_type`
This commit is contained in:
Jeroen van Rijn
2024-10-01 23:45:59 +02:00
committed by GitHub

View File

@@ -36,6 +36,17 @@ to_bytes :: proc "contextless" (s: []$T) -> []byte {
return ([^]byte)(raw_data(s))[:len(s) * size_of(T)]
}
/*
Turns a byte slice into a type.
*/
@(require_results)
to_type :: proc(buf: []u8, $T: typeid) -> (T, bool) #optional_ok {
if len(buf) < size_of(T) {
return {}, false
}
return intrinsics.unaligned_load((^T)(raw_data(buf))), true
}
/*
Turn a slice of one type, into a slice of another type.