pub mod broadcast;
pub mod component;
pub mod crypto;
pub mod error;
pub mod http;
pub mod install;
pub mod middleware;
pub mod morph;
pub mod prelude;
pub mod registry;
pub mod render;
pub mod request;
pub mod response;
pub mod snapshot;
pub mod template;
pub use broadcast::{broadcast, SparkBroadcast};
pub use component::{Component, Ctx, MountProps, PropertyWrite};
pub use error::{Error, Result};
pub use install::{ensure_bellows_bound, install, install_routes};
pub use registry::{BoxedComponent, ComponentEntry, DynComponent};
pub use render::{boot_script, render_mount};
pub use ::async_trait;
pub use ::futures;
pub use ::inventory;
pub use ::serde;
pub use ::serde_json;
pub fn const_eq(a: &[u8], b: &[u8]) -> bool {
if a.len() != b.len() {
return false;
}
let mut diff: u8 = 0;
for (x, y) in a.iter().zip(b.iter()) {
diff |= x ^ y;
}
diff == 0
}