pub fn read_str_unchecked(data: &[u8], offset: usize) -> Option<(&str, usize)>
Read string with 4-byte length prefix (Borsh format) Returns (string slice, total bytes consumed including length prefix)