Code Explainers

Code explainers tagged #closures

php
namespace App\Providers;
 
use Illuminate\Database\Query\Builder as QueryBuilder;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;

Adding a whereActive macro in Laravel

macros service-provider query-builder
Intermediate 5 steps
go
package proxy
 
import (
	"log"

Building a hardened Go reverse proxy

reverse-proxy http timeouts
Intermediate 7 steps
typescript
type ResizeCallback = (size: { width: number; height: number }) => void;
 
export function observeResize(callback: ResizeCallback, delay = 150) {
  let timeoutId: ReturnType<typeof setTimeout> | undefined;

Debouncing window resize in TypeScript

debounce closures event-listeners
Intermediate 6 steps
rust
use axum::{
    extract::State,
    routing::{get, post, MethodRouter},
    Json, Router,

Self-documenting routes in Axum

builder-pattern closures shared-state
Intermediate 8 steps
javascript
function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn.apply(this, args);

Building a curry function in JavaScript

currying closures higher-order-functions
Intermediate 7 steps
go
package handlers
 
import (
	"net/http"

Header-driven API versioning in Gin

api-versioning header-binding closures
Intermediate 6 steps
php
<?php
 
namespace App\Providers;
 

Defining rate limiters in Laravel

rate limiting service provider closures
Intermediate 7 steps
go
package api
 
import (
	"encoding/json"

Building reusable JSON helpers in Go HTTP handlers

http json error-handling
Intermediate 9 steps
go
package middleware
 
import (
	"net/http"

Building a CORS middleware in Gin

cors middleware closures
Intermediate 9 steps
rust
use std::fs;
use std::path::Path;
 
use regex::Regex;

Redacting emails in a file with Rust

regex file-io closures
Intermediate 6 steps
go
package middleware
 
import (
	"net/http"

How a www-to-apex redirect middleware works in Gin

middleware http-redirect closures
Intermediate 5 steps
javascript
function memoize(fn, resolver) {
  const cache = new Map();
 
  function memoized(...args) {

Building a memoize wrapper in JavaScript

memoization closures higher-order-functions
Intermediate 7 steps
python
from functools import wraps
 
from django.core.cache import cache
from django.http import JsonResponse

Building a rate-limit decorator in Django

decorators rate limiting caching
Intermediate 7 steps
rust
pub struct ScopeGuard<F: FnMut()> {
    rollback: F,
    active: bool,
}

A RAII rollback guard in Rust

raii error-handling closures
Advanced 8 steps
javascript
function makeTableSorter(rows) {
  const state = { key: null, dir: 1 };
 
  const compareBy = (key) => (a, b) => {

Building a stateful table sorter in JavaScript

closures stable-sort comparators
Intermediate 7 steps
javascript
function createAutocomplete(input, resultsList, { minChars = 2, delay = 300 } = {}) {
  let timer = null;
  let controller = null;
 

Building a debounced autocomplete widget

debouncing abortcontroller closures
Intermediate 9 steps
typescript
type Curried<A extends any[], R> = A extends [infer First, ...infer Rest]
  ? (arg: First) => Rest extends [] ? R : Curried<Rest, R>
  : R;
 

Type-safe currying in TypeScript

currying conditional-types recursion
Advanced 8 steps
php
<?php
 
namespace App\Http;
 

Building an onion middleware pipeline in PHP

middleware closures array-reduce
Advanced 9 steps