NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io, #187 most downloaded on crates.io
Strongly Typed Mimes
Latest stable
0.3.18
Last release 9 days ago
05 Nov 2026
Ships unpredictably
gaps range from 8 days to 3.6 years
Rarely documented
notes for 1 of 39 stable releases
3 versions withdrawn
withdrawn after publishing
12 years old
42 releases · first in 2014
Drag across the ruler to compare, or tap a release to open it.
This project publishes no release notes. Between v0.3.17 and v0.3.18 there were 7 commits, 6 of them substantive:
This project publishes no release notes. Between v0.3.17 and v0.3.18 there were 7 commits, 6 of them substantive:
This project publishes no release notes. Between v0.3.16 and v0.3.17 there were 2 commits, 1 of them substantive:
This project publishes no release notes. Between v0.3.16 and v0.3.17 there were 2 commits, 1 of them substantive:
This project publishes no release notes. Between v0.3.15 and v0.3.16 there were 2 commits, 1 of them substantive:
This project publishes no release notes. Between v0.3.15 and v0.3.16 there were 2 commits, 1 of them substantive:
Your coding agent can read these notes before it upgrades. Set up the MCP server →
Fix deprecated Error::description usage
This project publishes no release notes. Between v0.3.14 and v0.3.15 there were 3 commits, 2 of them substantive:
allow deprecated ... patterns in lookup table test
This project publishes no release notes. Between v0.3.13 and v0.3.14 there were 4 commits, 3 of them substantive:
This project publishes no release notes. Between v0.3.12 and v0.3.13 there were 2 commits, 1 of them substantive:
This project publishes no release notes. Between v0.3.12 and v0.3.13 there were 2 commits, 1 of them substantive:
This project publishes no release notes. Between v0.3.11 and v0.3.12 there were 2 commits, 1 of them substantive:
This project publishes no release notes. Between v0.3.11 and v0.3.12 there were 2 commits, 1 of them substantive:
This project publishes no release notes. Between v0.3.10 and v0.3.11 there were 2 commits, 1 of them substantive:
This project publishes no release notes. Between v0.3.10 and v0.3.11 there were 2 commits, 1 of them substantive:
allow deprecation warning for AsciiExt
This project publishes no release notes. Between v0.3.9 and v0.3.10 there were 35 commits, 25 of them substantive:
…and 5 more.
This project publishes no release notes. Between v0.3.8 and v0.3.9 there were 2 commits, 1 of them substantive:
This project publishes no release notes. Between v0.3.8 and v0.3.9 there were 2 commits, 1 of them substantive:
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
It should be extensible. As a bunch of enums, adding new variants was technically a breaking change (though who would match on every SubLevel variant?…
Changed from several open-ended enums to an opaque Mime struct.
It should be fast. The improvement here is that the full text is stored in a single buffer. In the previous versions, being a bunch of internal enums, it was quite slow to use fmt::Display. Writing a single buffer reduces the overhead of the std::fmt machinery.
Comparisons with constants is near instant. Comparing with parsed Mimes is slightly slower, but there is also room to add optimizations which I've skipped in order to get this our the door.
It should be easy to create a Mime. In this design, you can use one of the common constants, like mime::TEXT_PLAIN, or parse a custom string into a Mime, like "application/vnd.github.api.v3+json".parse(). No more importing 5 different types or passing empty Vecs.
With macros 2.0, it will be possible to make a macro that can parse the text at compile time, allowing custom constant Mimes.
It should be extensible. As a bunch of enums, adding new variants was technically a breaking change (though who would match on every SubLevel variant?). By using constants, new ones can be added without breaking anyone.
Knowledge of suffixes. You can check the suffix, such as in image/svg+xml.
Comparing is still easy. You can still compare the various components of a Mime in a match. This works perfectly fine:
match (mime.type_(), mime.subtype()) {
(mime::TEXT, mime::PLAIN) => println!("plain text"),
(mime::TEXT, _) => println!("structured text"),
_ => println!("not text"),
}
Additionally, Mime and its components can be easily compared against &str.
assert_eq!(mime::TEXT_PLAIN, "text/plain");
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.