seq_marked/seq_data/
impl_from_seq_marked.rs1use crate::Marked;
2use crate::SeqData;
3use crate::SeqMarked;
4
5impl<D> From<SeqMarked<D>> for Option<SeqData<D>> {
6 fn from(value: SeqMarked<D>) -> Self {
7 let (seq, marked) = value.into_parts();
8 match marked {
9 Marked::TombStone => None,
10 Marked::Normal(d) => Some(SeqData::new(seq, d)),
11 }
12 }
13}
14
15#[cfg(test)]
16mod tests {
17 use super::*;
18
19 #[test]
20 fn test_from_seq_marked() {
21 let seq_marked = SeqMarked::new_normal(42, "data".to_string());
22 let seq_data: Option<SeqData<String>> = seq_marked.into();
23
24 assert!(seq_data.is_some());
25 let seq_data = seq_data.unwrap();
26 assert_eq!(seq_data.seq, 42);
27 assert_eq!(seq_data.data, "data".to_string());
28
29 let seq_marked = SeqMarked::<String>::new_tombstone(5);
30 let seq_data: Option<SeqData<String>> = seq_marked.into();
31
32 assert!(seq_data.is_none());
33 }
34}