headers-accept

Crates.ioheaders-accept
lib.rsheaders-accept
version0.1.3
sourcesrc
created_at2024-04-25 21:21:36.211141
updated_at2024-05-06 18:07:03.402435
description🤝 The missing `Accept` implementation for `headers::Header`
homepagehttps://github.com/maxcountryman/headers-accept
repositoryhttps://github.com/maxcountryman/headers-accept
max_upload_size
id1220757
size30,615
Max Countryman (maxcountryman)

documentation

README

headers-accept

🤝 The missing `Accept` implementation for `headers::Header`

🎨 Overview

This crate provides an implementation of headers::Header for Accept.

While other crates exist, they either rely on stagnant crates like mime (headers-accept uses mediatype instead) or deviate from RFC 9110 (by imposing onerous sort logic) or both.

This crate aims to solve these problems while adhereing to the spec outlined in section 12.5.1.

📦 Install

To use the crate in your project, add the following to your Cargo.toml file:

[dependencies]
headers-accept = "0.1.3"

🤸 Usage

Example

use std::str::FromStr;

use headers_accept::Accept;
use mediatype::MediaTypeBuf;

let accept = Accept::from_str("audio/*; q=0.2, audio/basic").unwrap();
let mut media_types = accept.media_types();
assert_eq!(
    media_types.next(),
    Some(&MediaTypeBuf::from_str("audio/basic").unwrap())
);
assert_eq!(
    media_types.next(),
    Some(&MediaTypeBuf::from_str("audio/*; q=0.2").unwrap())
);
assert_eq!(media_types.next(), None);

🦺 Safety

This crate uses #![forbid(unsafe_code)] to ensure everything is implemented in 100% safe Rust.

👯 Contributing

We appreciate all kinds of contributions, thank you!

Commit count: 14

cargo fmt