difftastic/rustdoc/tree_magic_mini/index.html

47 lines
8.4 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="`tree_magic_mini` is a Rust crate that determines the MIME type a given file or byte stream."><title>tree_magic_mini - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="tree_magic_mini" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../tree_magic_mini/index.html">tree_magic_mini</a><span class="version">3.1.6</span></h2></div><div class="sidebar-elems"><ul class="block">
<li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#functions">Functions</a></li></ul></section></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../tree_magic_mini/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">tree_magic_mini</a><button id="copy-path" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../src/tree_magic_mini/lib.rs.html#1-431">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p><code>tree_magic_mini</code> is a Rust crate that determines the MIME type a given file or byte stream.</p>
<p>This is a fork of the <a href="https://crates.io/crates/tree_magic">tree_magic</a>
crate by Allison Hancock. It includes the following changes:</p>
<ul>
<li>Updated dependencies.</li>
<li>Reduced copying and memory allocation, for a slight increase in speed and
decrease in memory use.</li>
<li>Reduced API surface. Some previously public APIs are now internal.</li>
<li>Removed the optional <code>cli</code> feature and <code>tmagic</code> binary.</li>
</ul>
<h2 id="about-tree_magic"><a href="#about-tree_magic">About tree_magic</a></h2>
<p><code>tree_magic</code> is designed to be more efficient and to have less false positives compared
to the old approach used by <code>libmagic</code>, or old-fashioned file extension comparisons.</p>
<p>Instead, this loads all known MIME types into a tree based on subclasses. Then, instead
of checking against <em>every</em> file type, <code>tree_magic</code> will traverse down the tree and
only check the files that make sense to check.</p>
<h2 id="features"><a href="#features">Features</a></h2>
<ul>
<li>Very fast perfomance (~150ns to check one file against one type,
between 5,000ns and 100,000ns to find a MIME type.)</li>
<li>Check if a file <em>is</em> a certain type.</li>
<li>Handles aliases (ex: <code>application/zip</code> vs <code>application/x-zip-compressed</code>)</li>
<li>Can delegate different file types to different “checkers”, reducing false positives
by choosing a different method of attack.</li>
</ul>
<h3 id="licensing-and-the-mime-database"><a href="#licensing-and-the-mime-database">Licensing and the MIME database</a></h3>
<p>By default, <code>tree_magic_mini</code> will attempt to load the shared MIME info
database from the standard locations at runtime.</p>
<p>If you wont have the database files available, or would like to include them
in your binary for simplicity, you can optionally embed the database
information if you enable the <code>tree_magic_db</code> feature.</p>
<p><strong>As the magic database files themselves are licensed under the GPL, you must
make sure your project uses a compatible license if you enable this behaviour.</strong></p>
<h2 id="example"><a href="#example">Example</a></h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Load a GIF file
</span><span class="kw">let </span>input: <span class="kw-2">&amp;</span>[u8] = <span class="macro">include_bytes!</span>(<span class="string">"../tests/image/gif"</span>);
<span class="comment">// Find the MIME type of the GIF
</span><span class="kw">let </span>result = tree_magic_mini::from_u8(input);
<span class="macro">assert_eq!</span>(result, <span class="string">"image/gif"</span>);
<span class="comment">// Check if the MIME and the file are a match
</span><span class="kw">let </span>result = tree_magic_mini::match_u8(<span class="string">"image/gif"</span>, input);
<span class="macro">assert_eq!</span>(result, <span class="bool-val">true</span>);</code></pre></div>
</div></details><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.from_file.html" title="fn tree_magic_mini::from_file">from_file</a></div><div class="desc docblock-short">Gets the MIME type of a file.</div></li><li><div class="item-name"><a class="fn" href="fn.from_filepath.html" title="fn tree_magic_mini::from_filepath">from_filepath</a></div><div class="desc docblock-short">Gets the MIME type of a file.</div></li><li><div class="item-name"><a class="fn" href="fn.from_u8.html" title="fn tree_magic_mini::from_u8">from_u8</a></div><div class="desc docblock-short">Gets the type of a file from a byte stream.</div></li><li><div class="item-name"><a class="fn" href="fn.match_file.html" title="fn tree_magic_mini::match_file">match_file</a></div><div class="desc docblock-short">Check if the given file matches the given MIME type.</div></li><li><div class="item-name"><a class="fn" href="fn.match_filepath.html" title="fn tree_magic_mini::match_filepath">match_filepath</a></div><div class="desc docblock-short">Check if the file at the given path matches the given MIME type.</div></li><li><div class="item-name"><a class="fn" href="fn.match_u8.html" title="fn tree_magic_mini::match_u8">match_u8</a></div><div class="desc docblock-short">Checks if the given bytestream matches the given MIME type.</div></li></ul></section></div></main></body></html>