mds

module
v0.30.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 27, 2026 License: BSD-3-Clause

README

mds

GoDoc CI

This repository defines generic data structures and utility types in Go.

The packages in this module are intended to be leaf libraries, and MUST NOT depend on packages outside this module, excepting only packages from the Go standard library, creachadair/msync, and selected golang.org/x/* packages on a case-by-case basis. Separate-package tests in this repository may depend on other packages, but such dependencies must be minimized.

Packages within the module may depend on each other, where appropriate.

This module is currently versioned v0, and thus packages here are subject to breaking changes. I will attempt to minimize such changes where practical, but I may revise package APIs from time to time. When making such changes, I will increment the minor version number as a signal that more substantial changes are included.

Although I wrote these packages mainly for my own use, they are intended to be general-purpose, and you are welcome to use and depend on them. If you do so, I would be grateful for you to file issues for any problems you may encounter. While I cannot promise extensive support, I will do my best to accommodate reasonable requests.

Data Structures

Several of the data-types in this module share common behaviors:

  • An Add method to add or update one or more elements in the container.
  • A Remove method to remove one or more elements from the container.
  • A Clear method that discards all the contents of the container.
  • A Peek method that returns an order statistic of the container.
  • An Each method that iterates the container in its natural order (usable as a range function).
  • An IsEmpty method that reports whether the container is empty.
  • A Len method that reports the number of elements in the container.
Packages

Utilities

  • cache [code] an in-memory key/value cache
  • compare [code] provides helpers for comparison of values
  • distinct [code] a probabilistic distinct-elements counter (CVM)
  • mbits [code] helpful functions for manipulating bits and bytes
  • mdiff [code], supports creating textual diff (example)
  • mnet [code] provides an in-memory network implementation compatible with the net package
  • mstr [code] helpful functions for manipulating strings
  • mtest [code] a support library for writing tests
  • shell [code] POSIX shell quoting and splitting
  • slice [code] helpful functions for manipulating slices
  • value [code] helpful functions for basic values and pointers

Directories

Path Synopsis
Package cache implements a keyed cache for arbitrary values.
Package cache implements a keyed cache for arbitrary values.
internal/cachetest
Package cachetest implements a test harness for cache implementations.
Package cachetest implements a test harness for cache implementations.
internal/expirer
Package expirer implements a type that manages timed expiration of keys.
Package expirer implements a type that manages timed expiration of keys.
Package compare contains support functions for comparison of ordered values.
Package compare contains support functions for comparison of ordered values.
Package distinct implements the probabilistic distinct-elements counter algorithm of Chakraborty, Vinodchandran, and Meel as described in the paper "Distinct Elements in Streams" ([CVM]).
Package distinct implements the probabilistic distinct-elements counter algorithm of Chakraborty, Vinodchandran, and Meel as described in the paper "Distinct Elements in Streams" ([CVM]).
Package heapq implements a generic heap-structured priority queue.
Package heapq implements a generic heap-structured priority queue.
internal
mdtest
Package mdtest includes some internal utilities for testing.
Package mdtest includes some internal utilities for testing.
Package mapset implements a basic set type using a built-in map.
Package mapset implements a basic set type using a built-in map.
Package mbits provides functions for manipulating bits and bytes.
Package mbits provides functions for manipulating bits and bytes.
Package mctx provides support for attaching data to context.Context values.
Package mctx provides support for attaching data to context.Context values.
Package mdiff supports creating textual diffs.
Package mdiff supports creating textual diffs.
Package mlink implements basic linked container data structures.
Package mlink implements basic linked container data structures.
Package mnet is an in-memory implementation of a subset of the net package.
Package mnet is an in-memory implementation of a subset of the net package.
Package mstr defines utility functions for strings.
Package mstr defines utility functions for strings.
Package mtest is a support library for writing tests.
Package mtest is a support library for writing tests.
Package omap implements a map-like collection on ordered keys.
Package omap implements a map-like collection on ordered keys.
Package queue implements an array-based FIFO queue.
Package queue implements an array-based FIFO queue.
Package ring implements a doubly-linked circular chain of data items, called a "ring".
Package ring implements a doubly-linked circular chain of data items, called a "ring".
Package shell supports splitting and joining of shell command strings.
Package shell supports splitting and joining of shell command strings.
Package slice implements some useful functions for slices.
Package slice implements some useful functions for slices.
Package stack implements an array-based LIFO stack.
Package stack implements an array-based LIFO stack.
Package stree implements the Scapegoat Tree, an approximately-balanced binary search tree.
Package stree implements the Scapegoat Tree, an approximately-balanced binary search tree.
Package value defines adapters for value types.
Package value defines adapters for value types.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL