mediatype 0.12.0

MIME Media-type parsing
Documentation

MediaType

MIME Media-type parsing for Rust

Crates.io GitHub license Rustdoc Rust

This crate provides two MediaType structs: MediaType and MediaTypeBuf.

MediaType

This does not copy data during parsing and borrows the original string. It is also const-constructible.

use mediatype::{names::*, MediaType, Value};

let mut multipart = MediaType::new(MULTIPART, FORM_DATA);

let boundary = Value::new("dyEV84n7XNJ").unwrap();
multipart.set_param(BOUNDARY, boundary);
assert_eq!(
     multipart.to_string(),
     "multipart/form-data; boundary=dyEV84n7XNJ"
);

multipart.subty = RELATED;
assert_eq!(
    multipart.to_string(),
    "multipart/related; boundary=dyEV84n7XNJ"
);

const IMAGE_SVG: MediaType = MediaType::from_parts(IMAGE, SVG, Some(XML), None);
let svg = MediaType::parse("IMAGE/SVG+XML").unwrap();
assert_eq!(svg, IMAGE_SVG);

MediaTypeBuf

This is an owned and immutable version of MediaType.

use mediatype::{names::*, values::*, MediaType, MediaTypeBuf};

let text_plain: MediaTypeBuf = "text/plain; charset=UTF-8".parse().unwrap();
assert_eq!(text_plain.get_param(CHARSET).unwrap(), UTF_8);

let mut text_plain: MediaType = text_plain.to_ref();
text_plain.subty = MARKDOWN;
assert_eq!(text_plain.to_string(), "text/markdown; charset=UTF-8");