feed-parser 2.0.0

A simple RSS 1.0 / RSS 2.0 / Atom feed parser
Documentation
**English** | [日本語]changelog.ja.md

# Changelog

## v2.0.0

### Malformed feeds no longer panic

The parsers called `unwrap()` and `assert!()` on untrusted input in 53 places, so an
entry missing a required field aborted the process. Every such path now returns a
[`ParseError`](errors.md).

### `ParseError` reworked

Added `DeserializeError`, `Utf8Error` and `IoError`; removed the never-constructed
`DateParseError`; marked the enum `#[non_exhaustive]`. `InvalidFeedFormat` and
`MissingField` are now actually returned rather than merely defined.

### Dependencies

Dropped `anyhow`, `chrono`, `reqwest`, `tokio` and `tokio-test`, none of which were
used. Upgraded `quick-xml` to 0.41.

### Toolchain and metadata

Raised the edition to 2024 (MSRV 1.85, see the [policy](development.md#minimum-supported-rust-version)),
filled in the crates.io metadata, and fixed the `repository` URL, which pointed at a
repository that does not exist.

### Migrating from 1.x

`parse` keeps its signature, so code that calls `.unwrap()` on the result still
compiles. Two changes need attention:

- Input that used to panic now returns `Err`, so error branches may be reached for the
  first time.
- `match` expressions over `ParseError` need a wildcard arm, and `DateParseError` no
  longer exists.

## v1.0.12

Added the `ParseError` and `ParseResult` types.

## v1.0.11

Made it possible to parse HTML in `<title></title>` and `<description></description>`
sections.