Skip to content

Commit ecce297

Browse files
committed
streamline code
1 parent e8b320d commit ecce297

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

examples/manual_metadata_encoding.rs

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -55,24 +55,15 @@ impl MetadataRoundtrip for IndividualMetadata {
5555
let size: [u8; std::mem::size_of::<usize>()] =
5656
md[0..std::mem::size_of::<usize>()].try_into().unwrap();
5757
let size = usize::from_le_bytes(size);
58-
let name =
59-
str::from_utf8(&md[std::mem::size_of::<usize>()..size + std::mem::size_of::<usize>()])
60-
.unwrap()
61-
.to_string();
62-
let offset = size + std::mem::size_of::<usize>();
63-
let size: [u8; std::mem::size_of::<usize>()] = md
64-
[offset..offset + std::mem::size_of::<usize>()]
65-
.try_into()
66-
.unwrap();
67-
let size = usize::from_le_bytes(size);
68-
let mut offset = offset + std::mem::size_of::<usize>();
58+
let md = &md[std::mem::size_of::<usize>()..];
59+
let name = str::from_utf8(&md[0..size]).unwrap().to_string();
60+
let md = &md[size..];
61+
let md = &md[std::mem::size_of::<usize>()..];
6962
let mut phenotypes = vec![];
70-
for _ in 0..size {
71-
let p: [u8; 4] = md[offset..offset + std::mem::size_of::<i32>()]
72-
.try_into()
73-
.unwrap();
74-
phenotypes.push(i32::from_le_bytes(p));
75-
offset += std::mem::size_of::<i32>();
63+
let chunks = md.chunks_exact(std::mem::size_of::<i32>());
64+
for c in chunks {
65+
let a: [u8; std::mem::size_of::<i32>()] = c.try_into().unwrap();
66+
phenotypes.push(i32::from_le_bytes(a));
7667
}
7768
Ok(Self { name, phenotypes })
7869
}

0 commit comments

Comments
 (0)