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}