1 个不稳定版本
使用旧的 Rust 2015
0.3.0 | 2024年2月23日 |
---|
#863 在 数据库接口
500KB
1K SLoC
mimty:为C和Rust提供快速、安全、自包含的MIME类型识别
Mimty是C和Rust的MIME类型识别库。这两种语言都作为一等语言同等受支持。
设计目标
- 安全性:通过编写此库的语言提供安全性保证。除非必要,否则严格避免不安全代码。
- 性能:目前,通过避免堆分配来实现性能。计划对静态MIME数据库进行有效重构,以优化查找效率。
- 简洁性: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/。