seq_marked/seq_data/
impl_from_seq_marked.rs

1use 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}