1 个不稳定版本

使用旧的 Rust 2015

0.3.0 2024年2月23日

#863数据库接口

LGPL-3.0

500KB
1K SLoC

mimty:为C和Rust提供快速、安全、自包含的MIME类型识别

Mimty是C和Rust的MIME类型识别库。这两种语言都作为一等语言同等受支持。

设计目标

  1. 安全性:通过编写此库的语言提供安全性保证。除非必要,否则严格避免不安全代码。
  2. 性能:目前,通过避免堆分配来实现性能。计划对静态MIME数据库进行有效重构,以优化查找效率。
  3. 简洁性:API由两个函数组成。这已经很简单了。

MIME数据库

在此上下文中,完整性就像完整性一样有意义,完整性是通过采用Apache项目维护的MIME类型数据库来实现的。

示例

以下是一些使用此库的示例。第一条语句通过文件的扩展名识别MIME类型。第二条和第三条语句通过匹配魔数识别文件或blob。在所有三种情况下,结果是字符串 "image/jpeg"

在所有三种情况下,结果都是字符串 "image/jpeg"

C API

char *mimetype = mimty_file("appendix/samples/cat.jpg");
char *mimetype = mimty_file("appendix/samples/cat");
char *mimetype = mimty_blob(((uint8_t [3]) {0xff, 0xd8, 0xff}), 3);

Rust API

use mimty;
let mimetype = mimty::file("appendix/samples/cat.jpg");
let mimetype = mimty::file("appendix/samples/cat");
let mimetype = mimty::blob(&[0xff, 0xd8, 0xff]);

构建

本项目使用Rust的构建系统。

git clone https://[email protected]/joshmorin/mimty.git
cd mimty
cargo build --release

构建的库应位于 target/release。C头文件位于 appendix/mimty.h

文档

文档也由cargo处理。

cargo doc

HTML文档位于 target/doc

贡献

对于添加新的MIME类型,向Apache项目提交补丁;此库使用的MIME类型信息的来源。

对于为此库做出贡献,在开始之前提交一个问题。您也可以通过[email protected]给我发邮件。如果事先没有提交相关的错误报告,我不能保证接受补丁。

版权

版权所有© 2015 Josh Morin [email protected]

本程序是自由软件:您可以在自由软件基金会发布的GNU通用公共许可证的条款和条件下重新分发和/或修改它,无论是许可证的第3版,还是(按您的选择)任何较新版本。

本程序以希望其有用的目的进行分发,但没有任何保证;甚至没有对适销性或特定目的适用性的暗示性保证。有关更多详细信息,请参阅GNU通用公共许可证。

您应已随本程序收到一份GNU通用公共许可证的副本。如果没有,请参阅http://www.gnu.org/licenses/

无运行时依赖