seq_marked/seq_marked/
impl_from_seqv.rs

1use crate::SeqMarked;
2use crate::SeqV;
3
4impl<M, T> From<SeqV<M, T>> for SeqMarked<(Option<M>, T)> {
5    fn from(value: SeqV<M, T>) -> Self {
6        SeqMarked::new_normal(value.seq, (value.meta, value.data))
7    }
8}
9
10#[cfg(test)]
11mod tests {
12    use super::*;
13
14    #[test]
15    fn test_from_seqv_with_meta() {
16        let seqv = SeqV::new_with_meta(42, Some("metadata".to_string()), 100u64);
17        let seq_marked: SeqMarked<(Option<String>, u64)> = seqv.into();
18
19        assert_eq!(seq_marked.seq(), 42);
20        assert_eq!(
21            seq_marked.data_ref(),
22            Some(&(Some("metadata".to_string()), 100))
23        );
24        assert!(!seq_marked.is_tombstone());
25    }
26
27    #[test]
28    fn test_from_seqv_without_meta() {
29        let seqv = SeqV::new_with_meta(10, None::<String>, 200u64);
30        let seq_marked: SeqMarked<(Option<String>, u64)> = seqv.into();
31
32        assert_eq!(seq_marked.seq(), 10);
33        assert_eq!(seq_marked.data_ref(), Some(&(None, 200)));
34        assert!(!seq_marked.is_tombstone());
35    }
36
37    #[test]
38    fn test_from_seqv_basic_constructor() {
39        let seqv = SeqV::new(5, vec![1, 2, 3]);
40        let seq_marked: SeqMarked<(Option<()>, Vec<i32>)> = seqv.into();
41
42        assert_eq!(seq_marked.seq(), 5);
43        assert_eq!(seq_marked.data_ref(), Some(&(None, vec![1, 2, 3])));
44        assert!(seq_marked.is_normal());
45    }
46}