MobiusExtras/Source/BeginnerLoop.swift (14 lines of code) (raw):
// Copyright Spotify AB.
// SPDX-License-Identifier: Apache-2.0
import MobiusCore
public extension Mobius {
/// A simplified version of `Mobius.loop` for use in tutorials.
///
/// This helper simplifies setting up a loop with no effects.
///
/// - Parameter update: A function taking a model and event and returning a new model.
@inlinable
static func beginnerLoop<Model, Event>(
update: @escaping (Model, Event) -> Model
) -> Builder<Model, Event, Never> {
let realUpdate = Update<Model, Event, Never> { model, event in
.next(update(model, event))
}
let effectHandler = EffectRouter<Never, Event>()
.asConnectable
return loop(update: realUpdate, effectHandler: effectHandler)
}
}