Code Explainers
Code explainers tagged #state-machine
javascript
import { useReducer, useEffect } from "react"; const initialState = { status: "idle", data: null, error: null };
Building a data-fetching hook in React
custom-hooks
usereducer
data-fetching
Intermediate
9 steps
typescript
export const OrderStatus = { Pending: 'pending', Paid: 'paid', Shipped: 'shipped',
A type-safe order state machine in TypeScript
state-machine
union-types
type-guards
Intermediate
8 steps
rust
pub fn collapse_whitespace(input: &str) -> String { let mut result = String::with_capacity(input.len()); let mut in_whitespace = false;
Collapsing runs of whitespace in Rust
string-processing
state-machine
iteration
Beginner
5 steps
java
public final class MultipartParser { public record FilePart(String name, String filename, String contentType, byte[] content) {}
Parsing multipart form data by hand in Java
parsing
byte-arrays
http
Advanced
8 steps
python
from urllib.parse import urlparse class RobotsRules:
Parsing and applying a robots.txt file
parsing
longest-prefix-match
state-machine
Intermediate
10 steps
ruby
class CircuitBreaker class OpenCircuitError < StandardError; end def initialize(failure_threshold: 5, reset_timeout: 30, half_open_max: 1)
How a circuit breaker guards failing calls
state-machine
fault-tolerance
concurrency
Advanced
9 steps
rust
pub struct Fibonacci { current: u64, next: u64, }
A Fibonacci iterator in Rust
iterators
traits
lazy-evaluation
Intermediate
6 steps
ruby
class Order class InvalidTransition < StandardError; end TRANSITIONS = {
A state machine for order transitions in Ruby
state-machine
data-driven
error-handling
Intermediate
8 steps
python
import time import threading from enum import Enum from functools import wraps
Building a circuit breaker in Python
circuit-breaker
resilience
decorators
Advanced
7 steps
typescript
type CsvRecord = Record<string, string>; function parseCsv(input: string): CsvRecord[] { const rows: string[][] = [];
Parsing CSV with a character state machine
state-machine
parsing
string-processing
Intermediate
8 steps
php
<?php namespace App\Resilience;
How a circuit breaker guards a flaky service
circuit-breaker
resilience
caching
Intermediate
9 steps
typescript
type JsonValue = Record<string, unknown> | unknown[]; export function parseJsonStream<T = JsonValue>( stream: ReadableStream<Uint8Array>,
Streaming JSON parsing with a depth counter
streams
parsing
state-machine
Advanced
9 steps
rust
use std::time::{Duration, Instant}; pub struct TokenBucket { capacity: f64,
A token bucket rate limiter in Rust
rate-limiting
token-bucket
lazy-refill
Intermediate
8 steps
typescript
type RequestState<T, E = string> = | { status: "idle" } | { status: "loading" } | { status: "success"; data: T; fetchedAt: number }
Modeling request state with discriminated unions
discriminated-unions
exhaustiveness-checking
state-machine
Intermediate
8 steps
javascript
const transitions = { cart: { checkout: 'shipping' }, shipping: { submitAddress: 'payment', back: 'cart' }, payment: { submitPayment: 'review', back: 'shipping' },
A finite state machine for checkout flow
state-machine
event-driven
data-driven-design
Intermediate
7 steps
typescript
type CheckoutState = "cart" | "shipping" | "payment" | "review" | "confirmed"; type CheckoutEvent = | { type: "PROCEED" }
A typed checkout state machine in TypeScript
state-machine
union-types
type-safety
Intermediate
7 steps
rust
/// A custom iterator that yields Fibonacci numbers up to a maximum value. pub struct Fibonacci { current: u64, next: u64,
Building a custom Fibonacci iterator in Rust
iterators
traits
state-machine
Intermediate
6 steps
javascript
const PENDING = 'pending'; const FULFILLED = 'fulfilled'; const REJECTED = 'rejected';
Building a Promise from scratch
promises
state-machine
microtasks
Advanced
10 steps