如何使用 Iron 创建自定义 Content-Type?

How do I create a custom Content-Type with Iron?

我想在我的 Iron 网络应用程序中创建 header Content-Type: application/x-protobuf

我从Iron文档中可以看到it's possible to construct content-types,但是没有SubLevel对应于protobuf。

如何创建这个 content-type 值?

let mut headers = Headers::new();
headers.set(ContentType(Mime(TopLevel::Application, SubLevel::???, vec![])));

but there's no SubLevel that corresponds to protobuf.

如果你阅读 the documentation for SubLevel,你会看到它的定义:

pub enum SubLevel {
    Star,
    Plain,
    // ... snip ...
    Ogg,
    Ext(String),
}

因此,您需要:

extern crate iron; // 0.6.0

use iron::{
    headers::ContentType,
    mime::{Mime, SubLevel, TopLevel},
    Headers,
};

fn main() {
    let mut headers = Headers::new();
    headers.set(ContentType(Mime(
        TopLevel::Application,
        SubLevel::Ext("x-protobuf".into()),
        vec![],
    )));
}