1pub mod builder;
2mod context;
3mod control;
4pub mod engine;
5mod events;
6mod generation;
7mod iter;
8mod limit;
9mod pipeline;
10mod steps;
11
12pub use builder::GeneticEngineBuilder;
13pub use control::EngineControl;
14pub use engine::GeneticEngine;
15pub use events::{EngineEvent, EventBus, EventHandler};
16pub use generation::Generation;
17pub use iter::{EngineIterator, EngineIteratorExt};
18pub use limit::Limit;
19pub use steps::EvaluateStep;
20
21pub use radiate_alters::*;
22pub use radiate_core::*;
23pub use radiate_error::{RadiateError, ensure, radiate_err};
24pub use radiate_selectors::*;
25pub use radiate_utils::Shape;
26
27pub(crate) type Result<T> = std::result::Result<T, RadiateError>;
28
29pub fn init_logging() {
30 pub use std::sync::Once;
31 static INIT_LOGGING: Once = Once::new();
32
33 INIT_LOGGING.call_once(|| {
34 use tracing_subscriber::fmt::format::FmtSpan;
35 use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
36
37 std::panic::set_hook(Box::new(|info| {
38 tracing::error!("PANIC: {}", info);
39 }));
40
41 tracing_subscriber::registry()
42 .with(
43 tracing_subscriber::fmt::layer()
44 .with_span_events(FmtSpan::NEW | FmtSpan::CLOSE)
45 .with_target(false)
46 .with_level(true)
47 .compact(),
48 )
49 .init();
50 });
51}