Compression codec category for ExCodecs.
This module serves as a namespace for compression codecs and provides category-level utilities for comparing and selecting compression algorithms.
Available Codecs
ExCodecs.Compression.Zstd— High ratio, good speedExCodecs.Compression.Lz4— Extremely fast compressionExCodecs.Compression.Snappy— Fast with low overheadExCodecs.Compression.Bzip2— High compression ratioExCodecs.Compression.Blosc2— Meta-compressor for array data
Compression vs Encoding
In ExCodecs, compression is encoding — and decompression is decoding. This consistent terminology spans all codec categories:
# These are equivalent
ExCodecs.encode(:zstd, data) # compress
ExCodecs.decode(:zstd, data) # decompress
Summary
Functions
Returns all available compression codecs.
Compresses data with the specified codec.
Decompresses data with the specified codec.
Functions
@spec available_codecs() :: [ExCodecs.Codec.t()]
Returns all available compression codecs.
Returns a list of %ExCodecs.Codec{} structs sorted by name.
Examples
iex> codecs = ExCodecs.Compression.available_codecs()
iex> is_list(codecs) and length(codecs) >= 5
true
@spec compress(atom(), binary(), keyword()) :: {:ok, binary()} | {:error, ExCodecs.Error.t()}
Compresses data with the specified codec.
Shortcut for ExCodecs.encode/3.
@spec decompress(atom(), binary(), keyword()) :: {:ok, binary()} | {:error, ExCodecs.Error.t()}
Decompresses data with the specified codec.
Shortcut for ExCodecs.decode/3.