Module reducer

Source
Expand description

§Reducer Module

This module provides traits and utilities for creating reducers - pure functions that take a current state and an action, and return a new state. This is a core concept in Redux-style state management.

§Example

use zed::{Reducer, create_reducer};

#[derive(Clone, Debug, PartialEq)]
struct CounterState {
    value: i32,
}

#[derive(Debug)]
enum CounterAction {
    Increment,
    Decrement,
    Set(i32),
}

// Create a reducer using a closure
let counter_reducer = create_reducer(|state: &CounterState, action: &CounterAction| {
    match action {
        CounterAction::Increment => CounterState { value: state.value + 1 },
        CounterAction::Decrement => CounterState { value: state.value - 1 },
        CounterAction::Set(val) => CounterState { value: *val },
    }
});

let state = CounterState { value: 0 };
let new_state = counter_reducer.reduce(&state, &CounterAction::Increment);
assert_eq!(new_state.value, 1);

Structs§

ClosureReducer
A reducer implementation that wraps a closure function.

Traits§

Reducer
A trait for implementing reducers that transform state based on actions.

Functions§

create_reducer
Creates a new reducer from a closure function.