.PHONY: all
all: help

.PHONY: help
help:
	@M=$$(perl -ne 'm/((\w|-)*):.*##/ && print length($$1)."\n"' Makefile | \
		sort -nr | head -1) && \
		perl -ne "m/^((\w|-)*):.*##\s*(.*)/ && print(sprintf(\"%s: %s\t%s\n\", \$$1, \" \"x($$M-length(\$$1)), \$$3))" Makefile

# This is necessary because I'm trying hard not to use
# any `nightly` features.  But rustfmt is likely to be
# a `nightly-only` feature for a long time to come, so
# this is my hack.
fmt:  ## Format the code, using the most modern version of rustfmt
	rustup run nightly cargo fmt