//! [`Topology`] — common materialization surface for every pattern.
//!
//! Each `*Pattern::build()` produces a value implementing this trait.
//! Calling [`Topology::materialize`] spawns the pattern's actors under a
//! single named root in the user-guardian (`/user/<name>`) so the
//! dashboard's topology view renders the pattern as a cohesive subtree.
use async_trait;
use ActorSystem;
use cratePatternError;
/// Inspectable, materializable description of a pattern's actor + stream
/// topology. Implementors hand back strongly-typed `Handles` after
/// materialization — you get a [`crate::Repository`], a
/// [`crate::cqrs::ProjectionHandle`], etc., depending on the pattern.