//! The [`PipelineFn`] trait for pipeline factory functions.
use crateSteps;
/// A pipeline factory: given borrowed catalog and params, produces a [`Steps<E>`] pipeline.
///
/// Named functions with tied lifetimes satisfy this automatically via the blanket impl:
///
/// ```ignore
/// fn my_pipeline<'a>(cat: &'a MyCatalog, params: &'a MyParams) -> impl Steps<MyError> + 'a {
/// (Node { .. }, Node { .. })
/// }
/// ```
///
/// The lifetime lives on the trait (not as a GAT), so the blanket impl for `Fn`
/// works without `impl_trait_in_assoc_type`.