feed-parser 2.0.0

A simple RSS 1.0 / RSS 2.0 / Atom feed parser
Documentation
<p align="center"><img src="docs/assets/hero.svg" width="100%"></p>

[English]README.md | **日本語**

[![Unit Test]https://github.com/akitenkrad/rs-feed-parser/actions/workflows/unit_test.yml/badge.svg]https://github.com/akitenkrad/rs-feed-parser/actions/workflows/unit_test.yml
[![crates.io]https://img.shields.io/crates/v/feed-parser.svg]https://crates.io/crates/feed-parser
[![docs.rs]https://docs.rs/feed-parser/badge.svg]https://docs.rs/feed-parser

`feed-parser` は RSS 1.0・RSS 2.0・Atom の各文書を単一の `Feed` 型として読み込みます.
フィードを利用する側のコードは,配信元がどの形式を採用しているかを知る必要がありません.
形式ごとにパーサを分けたうえで,`dc:creator`,`pubDate` と `published` の違い,Atom の
`<link>` 属性といった差異は読み込み時に正規化されます.不正な入力は panic ではなく
`ParseError` として返ります.

## インストール

```bash
cargo add feed-parser
```

Rust 1.85 以降が必要です.

## クイックスタート

```rust
use feed_parser::parsers::{Feed, rss2};

let rss_data = r#"
<rss version="2.0">
    <channel>
        <title>RSS Title</title>
        <link>http://www.example.com/main.html</link>
        <description>This is an example of an RSS feed</description>
        <item>
            <title>Item 1</title>
            <link>http://www.example.com/item1.html</link>
            <description>Item 1 description</description>
            <pubDate>2024-01-01T23:59:02Z</pubDate>
        </item>
    </channel>
</rss>
"#;

let feeds: Vec<Feed> = rss2::parse(rss_data).unwrap();
assert_eq!(feeds[0].title, "Item 1");
assert_eq!(feeds[0].link, "http://www.example.com/item1.html");
assert_eq!(feeds[0].description.clone().unwrap(), "Item 1 description");
```

## ドキュメント

- **[使い方]docs/usage.ja.md** — 3つのパーサ,`Feed` 型,各形式の要素がどう対応づけられるか.
- **[エラー処理]docs/errors.ja.md**`ParseError` の全バリアント,返る条件,match の書き方.
- **[開発]docs/development.ja.md** — ビルド・テストコマンド,リポジトリ構成,MSRV 方針,リリース手順.
- **[変更履歴]docs/changelog.ja.md** — リリースノートと 1.x から 2.0 への移行ガイド.

## ライセンス

Apache License, Version 2.0 のもとで提供されます.[LICENSE](LICENSE) を参照してください.