|
1 | 1 | #[cfg(feature = "derive")] |
2 | 2 | #[test] |
3 | 3 | fn book_mutation_metadata() { |
| 4 | + use streaming_iterator::StreamingIterator; |
| 5 | + use tskit::metadata::MetadataRoundtrip; |
| 6 | + |
4 | 7 | // ANCHOR: metadata_derive |
5 | 8 | #[derive(serde::Serialize, serde::Deserialize, tskit::metadata::MutationMetadata)] |
6 | 9 | #[serializer("serde_json")] |
@@ -89,4 +92,30 @@ fn book_mutation_metadata() { |
89 | 92 | .metadata::<MutationMetadata>(2.into()) |
90 | 93 | .is_none()); |
91 | 94 | // ANCHOR_END: metadata_retrieval_none |
| 95 | + |
| 96 | + // ANCHOR: metadata_bulk_decode_lending_iter |
| 97 | + let mut mutation_row_lending_iterator = tables.mutations().lending_iter(); |
| 98 | + let mut decoded_md = vec![]; |
| 99 | + while let Some(row_view) = mutation_row_lending_iterator.next() { |
| 100 | + match row_view.metadata { |
| 101 | + Some(slice) => decoded_md.push(Some(MutationMetadata::decode(slice).unwrap())), |
| 102 | + None => decoded_md.push(None), |
| 103 | + } |
| 104 | + } |
| 105 | + // ANCHOR_END: metadata_bulk_decode_lending_iter |
| 106 | + |
| 107 | + // ANCHOR: metadata_bulk_decode_lending_iter_with_filter |
| 108 | + let mut mutation_row_lending_iterator = tables.mutations().lending_iter(); |
| 109 | + let mut decoded_md = vec![]; |
| 110 | + while let Some(row_view) = mutation_row_lending_iterator |
| 111 | + .next() |
| 112 | + .filter(|rv| rv.metadata.is_some()) |
| 113 | + { |
| 114 | + decoded_md.push(( |
| 115 | + row_view.id, |
| 116 | + // The unwrap will never panic because of our filter |
| 117 | + MutationMetadata::decode(row_view.metadata.unwrap()).unwrap(), |
| 118 | + )); |
| 119 | + } |
| 120 | + // ANCHOR_END: metadata_bulk_decode_lending_iter_with_filter |
92 | 121 | } |
0 commit comments