Skip to main content

hermes_core/
lib.rs

1mod error;
2mod event;
3mod group;
4mod subject;
5
6pub use error::{DecodeError, EncodeError};
7pub use event::Event;
8pub use group::EventGroup;
9pub use subject::{Segment, Subject};
10
11// Re-export the derive macro
12pub use hermes_macros::Event;
13
14/// Encode an event to bytes using bincode (serde compat).
15pub fn encode<E: serde::Serialize>(event: &E) -> Result<Vec<u8>, EncodeError> {
16    bincode::serde::encode_to_vec(event, bincode::config::standard()).map_err(Into::into)
17}
18
19/// Decode bytes into an event using bincode (serde compat).
20pub fn decode<E: serde::de::DeserializeOwned>(bytes: &[u8]) -> Result<E, DecodeError> {
21    let (val, _len) = bincode::serde::decode_from_slice(bytes, bincode::config::standard())?;
22    Ok(val)
23}
24
25// Re-export serde for use in derive macros
26pub use serde;