event_sourcing/
into_event_list.rs

1use crate::Event;
2use alloc::vec;
3use alloc::vec::Vec;
4
5/// Utility trait for making it easier to return events
6pub trait IntoEventList<T> {
7    fn into_list(self) -> Vec<Event<T>>;
8}
9
10impl<T> IntoEventList<T> for Vec<Event<T>> {
11    fn into_list(self) -> Vec<Event<T>> {
12        self
13    }
14}
15
16impl<T> IntoEventList<T> for Event<T> {
17    fn into_list(self) -> Vec<Event<T>> {
18        vec![self]
19    }
20}
21
22#[cfg(test)]
23mod tests {
24    use crate::{Event, IntoEventList};
25    use alloc::vec;
26
27    #[test]
28    fn init_list_should_work_for_vec() {
29        let data = vec![Event {
30            aggregate_id: Default::default(),
31            event_id: 0,
32            created_at: Default::default(),
33            user_id: None,
34            payload: (),
35        }];
36
37        let _ = data.into_list();
38    }
39
40    #[test]
41    fn init_list_should_work_for_single_event() {
42        let data = Event {
43            aggregate_id: Default::default(),
44            event_id: 0,
45            created_at: Default::default(),
46            user_id: None,
47            payload: (),
48        };
49
50        let _ = data.into_list();
51    }
52}