Skip to main content

use_event_payload/
lib.rs

1#![forbid(unsafe_code)]
2#![doc = include_str!("../README.md")]
3
4#[derive(Clone, Debug, Eq, PartialEq)]
5pub struct EventPayload<T> {
6    value: T,
7}
8
9impl<T> EventPayload<T> {
10    pub fn new(value: T) -> Self {
11        Self { value }
12    }
13
14    pub const fn get(&self) -> &T {
15        &self.value
16    }
17
18    pub fn into_inner(self) -> T {
19        self.value
20    }
21}
22
23impl<T> From<T> for EventPayload<T> {
24    fn from(value: T) -> Self {
25        Self::new(value)
26    }
27}
28
29#[cfg(test)]
30mod tests {
31    use super::EventPayload;
32
33    #[test]
34    fn wraps_payload_values() {
35        let payload = EventPayload::new("rustuse build");
36
37        assert_eq!(*payload.get(), "rustuse build");
38        assert_eq!(payload.into_inner(), "rustuse build");
39    }
40
41    #[test]
42    fn converts_from_inner_value() {
43        let payload = EventPayload::from(7_u8);
44
45        assert_eq!(*payload.get(), 7);
46    }
47}