seq_marked/seqv/
impl_from_seq_data.rs

1use crate::SeqData;
2use crate::SeqV;
3
4impl<M, T> From<SeqData<(Option<M>, T)>> for SeqV<M, T> {
5    fn from(value: SeqData<(Option<M>, T)>) -> Self {
6        let (seq, (meta, v)) = value.into_parts();
7
8        SeqV::new_with_meta(seq, meta, v)
9    }
10}
11
12#[cfg(test)]
13mod tests {
14    use super::*;
15
16    #[test]
17    fn test_from_seq_marked_with_meta() {
18        let seq_marked = SeqData::new(42, (Some("metadata".to_string()), 100u64));
19        let seqv: SeqV<String, u64> = seq_marked.into();
20
21        assert_eq!(seqv.seq, 42);
22        assert_eq!(seqv.meta, Some("metadata".to_string()));
23        assert_eq!(seqv.data, 100);
24    }
25
26    #[test]
27    fn test_from_seq_marked_without_meta() {
28        let seq_marked = SeqData::new(10, (None::<String>, 200u64));
29        let seqv: SeqV<String, u64> = seq_marked.into();
30
31        assert_eq!(seqv.seq, 10);
32        assert_eq!(seqv.meta, None);
33        assert_eq!(seqv.data, 200);
34    }
35}