#![warn(clippy::all)]
#![allow(clippy::module_inception)]
pub mod error;
pub mod parser;
pub mod traits;
pub mod types;
pub mod utils;
pub mod prelude {
pub use crate::error::*;
pub use crate::parser::*;
pub use crate::traits::*;
pub use crate::types::*;
pub use crate::utils::{
EventBatchStream, EventBatcher, EventDeduplicator, EventIdGenerator,
EventPerformanceMetrics, EventStream, MetricsSummary, RateLimiter, StreamUtils,
};
}
pub use error::{EventError, EventResult};
pub use traits::{Event, EventFilter, EventHandler, EventParser};
pub use types::{EventKind, EventMetadata, GenericEvent, StreamInfo};
pub use utils::{EventBatchStream, EventStream};
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_modules_are_accessible() {
let _error_module = std::any::type_name::<error::EventError>();
let _parser_module = std::any::type_name::<parser::JsonEventParser>();
let _traits_module = std::any::type_name::<dyn traits::Event>();
let _types_module = std::any::type_name::<types::EventKind>();
let _utils_module = std::any::type_name::<utils::EventStream>();
}
#[test]
fn test_prelude_exports_are_accessible() {
use crate::prelude::*;
let _error_type = std::any::type_name::<EventError>();
let _result_type = std::any::type_name::<EventResult<()>>();
let _parser_type = std::any::type_name::<parser::JsonEventParser>();
let _event_trait = std::any::type_name::<dyn Event>();
let _filter_trait = std::any::type_name::<dyn EventFilter>();
let _handler_trait = std::any::type_name::<dyn EventHandler>();
let _parser_trait = std::any::type_name::<dyn EventParser<Input = serde_json::Value>>();
let _event_kind_type = std::any::type_name::<EventKind>();
let _metadata_type = std::any::type_name::<EventMetadata>();
let _generic_event_type = std::any::type_name::<GenericEvent>();
let _batch_stream_type = std::any::type_name::<EventBatchStream>();
let _batcher_type = std::any::type_name::<EventBatcher>();
let _deduplicator_type = std::any::type_name::<EventDeduplicator>();
let _id_generator_type = std::any::type_name::<EventIdGenerator>();
let _metrics_type = std::any::type_name::<EventPerformanceMetrics>();
let _stream_type = std::any::type_name::<EventStream>();
let _summary_type = std::any::type_name::<MetricsSummary>();
let _rate_limiter_type = std::any::type_name::<RateLimiter>();
let _stream_utils_type = std::any::type_name::<StreamUtils>();
}
#[test]
fn test_crate_root_error_reexports() {
let _error_type = std::any::type_name::<EventError>();
let _result_type = std::any::type_name::<EventResult<()>>();
assert_eq!(
std::any::type_name::<EventError>(),
std::any::type_name::<error::EventError>()
);
assert_eq!(
std::any::type_name::<EventResult<String>>(),
std::any::type_name::<error::EventResult<String>>()
);
}
#[test]
fn test_crate_root_traits_reexports() {
let _event_trait = std::any::type_name::<dyn Event>();
let _filter_trait = std::any::type_name::<dyn EventFilter>();
let _handler_trait = std::any::type_name::<dyn EventHandler>();
let _parser_trait = std::any::type_name::<dyn EventParser<Input = Vec<u8>>>();
assert_eq!(
std::any::type_name::<dyn Event>(),
std::any::type_name::<dyn traits::Event>()
);
assert_eq!(
std::any::type_name::<dyn EventFilter>(),
std::any::type_name::<dyn traits::EventFilter>()
);
assert_eq!(
std::any::type_name::<dyn EventHandler>(),
std::any::type_name::<dyn traits::EventHandler>()
);
assert_eq!(
std::any::type_name::<dyn EventParser<Input = Vec<u8>>>(),
std::any::type_name::<dyn traits::EventParser<Input = Vec<u8>>>()
);
}
#[test]
fn test_crate_root_types_reexports() {
let _event_kind_type = std::any::type_name::<EventKind>();
let _metadata_type = std::any::type_name::<EventMetadata>();
let _generic_event_type = std::any::type_name::<GenericEvent>();
let _stream_info_type = std::any::type_name::<StreamInfo>();
assert_eq!(
std::any::type_name::<EventKind>(),
std::any::type_name::<types::EventKind>()
);
assert_eq!(
std::any::type_name::<EventMetadata>(),
std::any::type_name::<types::EventMetadata>()
);
assert_eq!(
std::any::type_name::<GenericEvent>(),
std::any::type_name::<types::GenericEvent>()
);
assert_eq!(
std::any::type_name::<StreamInfo>(),
std::any::type_name::<types::StreamInfo>()
);
}
#[test]
fn test_crate_root_utils_reexports() {
let _batch_stream_type = std::any::type_name::<EventBatchStream>();
let _stream_type = std::any::type_name::<EventStream>();
assert_eq!(
std::any::type_name::<EventBatchStream>(),
std::any::type_name::<utils::EventBatchStream>()
);
assert_eq!(
std::any::type_name::<EventStream>(),
std::any::type_name::<utils::EventStream>()
);
}
#[test]
fn test_prelude_module_exists() {
let _ = std::any::type_name::<prelude::EventError>();
use crate::prelude;
let _ = std::any::type_name::<prelude::EventError>();
}
#[test]
fn test_all_modules_declared() {
let _ = std::any::type_name::<crate::error::EventError>();
let _ = std::any::type_name::<crate::types::EventKind>();
let _ = std::any::type_name::<dyn crate::traits::Event>();
let _ = std::any::type_name::<crate::parser::JsonEventParser>();
let _ = std::any::type_name::<crate::utils::EventStream>();
}
#[test]
fn test_compiler_attributes() {
let _x = 42;
let _result = Ok::<i32, &str>(_x);
}
#[test]
fn test_documentation_example_types_exist() {
let _ = std::any::type_name::<GenericEvent>();
let _ = std::any::type_name::<EventKind>();
let _ = std::any::type_name::<EventError>();
use crate::prelude::*;
let _ = std::any::type_name::<GenericEvent>();
let _ = std::any::type_name::<EventKind>();
let _ = std::any::type_name::<EventError>();
}
}