assert-str 0.3.0

Macros for asserting multiline strings
Documentation
# Changelog

All notable changes to this project are 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).

## [0.3.0] - 2026-07-24

### Fixed

- `assert_str_trim_all_eq!` / `assert_str_trim_all_ne!` behaved differently
  depending on which arm matched: the 2-argument and trailing-comma arms used
  `trim_eq` semantics, and the trailing-comma arms delegated to the wrong macro
  entirely. All arms now share one consistent definition.
- Corrected the `assert_str_trim_ne!` documentation, which described equality
  instead of inequality, and fixed a `Responces``Responses` typo across the
  doc examples.

### Changed

- **Behaviour change:** `trim_all` now removes **all** whitespace anywhere in
  the string (including *inside* a line), matching its documented contract.
  Previously intra-line whitespace was preserved. Use `assert_str_trim_eq!` if
  intra-line whitespace should remain significant.
- Internals refactored: the six macros are now thin shims over a shared,
  `#[track_caller]` implementation, removing ~220 lines of duplicated macro
  bodies while preserving behaviour and the panic-message format.

### Added

- Public `normalize(&str, Mode) -> String` function and `Mode` enum
  (`Lines`, `Trim`, `TrimAll`), exposing the macros' normalization for reuse
  outside of assertions (snapshot pre-processing, hash/sort keys, custom
  comparisons). `Mode` is `#[non_exhaustive]`.
- `#![forbid(unsafe_code)]` — the crate contains no `unsafe` code.
- An explicit `rust-version` (MSRV 1.85, required by edition 2024).

## [0.2.0]

- Previous release.

[0.3.0]: https://github.com/AnderEnder/assert-str/compare/0.2.0...0.3.0
[0.2.0]: https://github.com/AnderEnder/assert-str/releases/tag/0.2.0