seq_marked/seq_marked/
impl_from_seqv.rs1use 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.internal_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.internal_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.internal_seq(), 5);
43 assert_eq!(seq_marked.data_ref(), Some(&(None, vec![1, 2, 3])));
44 assert!(seq_marked.is_normal());
45 }
46}