comperr 1.0.0

A minimal, lightweight crate for emitting span-accurate compile-time errors from procedural macros.
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0] - 2026-04-24

### Added

- `Error::from_token_stream(tokens: TokenStream) -> Self` to reconstruct an
  `Error` from a token stream containing `compile_error!` invocations. Useful
  when a nested macro call returns a stream that may already contain errors and
  you need to inspect, combine, or suppress them before re-emitting.
- `Error::empty()` constructor for starting an accumulation with no messages.
- `Error::is_empty() -> bool` to check whether any messages have been added.
- `impl Extend<Error> for Error` for pushing multiple errors from an iterator.
- `impl FromIterator<Error> for Error` so errors can be collected with
  `.collect::<Error>()`. Collecting an empty iterator produces `Error::empty()`.
- `impl Display for Error`: single errors print their message directly; multiple
  errors are joined with newlines.
- `impl std::error::Error for Error`.
- `#[derive(Debug, Clone)]` on `Error`.
- `#[must_use]` on all constructors and functions returning a value.

### Fixed

- Declared MSRV as `rust-version = "1.85"` in `Cargo.toml` (required by the
  2024 edition).
- Relaxed `proc-macro2` dependency from `"1.0.106"` to `"1"` to avoid
  duplicate compilations in consumer dependency trees.

## [0.2.0] - 2026-04-23

### Breaking

- Switched from `proc_macro` to `proc_macro2` for broader compatibility.

### Added

- `Error::combine(&mut self, other: Error)` to batch multiple errors together.
  When `to_compile_error()` is called, all errors will be emitted as separate
  `compile_error!` invocations, allowing the compiler to report them all at once.
- Unit tests

### Optimized

- Added `#[inline]` hints to `Error::new`, `Error::combine`, and `error()` for faster
  function inlining.
- Replaced `Vec<(Span, String)>` with `Option<(Span, String)>` + `Option<Vec<...>>` to avoid
  heap allocation for the common single-error case.
- Added release profile with `lto = true` and `opt-level = "z"` for minimal binary size.

## [0.1.0] - 2026-04-22

### Added

- `Error` struct with `new(span, message)` and `to_compile_error()`.
- `error(span, message)` free function as a one-shot convenience wrapper.
- Span-accurate `compile_error!` emission by constructing tokens manually
  and attaching the span to each one via `.set_span()`.