30 个版本 (15 个重大变更)
0.16.2 | 2023 年 10 月 5 日 |
---|---|
0.16.0 | 2023 年 9 月 30 日 |
0.13.0 | 2022 年 8 月 18 日 |
0.13.0-alpha.3 | 2021 年 11 月 7 日 |
0.2.0 | 2014 年 11 月 20 日 |
#4 in #file-extension
每月 13,350 次下载
用于 9 个 Crates (8 直接使用)
63KB
670 行
对 libmagic
的高层绑定
关于
此 crate 提供了对 libmagic
C 库 的绑定,该库可以识别文件(或缓冲区)中包含的数据类型,并提供文本描述、MIME 类型和常规文件扩展名。
用法
// only for Rust Edition 2018, see https://doc.rust-lang.net.cn/edition-guide/rust-2021/prelude.html
use std::convert::TryInto;
fn file_example() -> Result<(), Box<dyn std::error::Error>> {
// Open a new configuration with flags
let cookie = magic::Cookie::open(magic::cookie::Flags::ERROR)?;
// Load a specific database
// (so exact test text assertion below works regardless of the system's default database version)
let database = ["data/tests/db-images-png"].try_into()?;
// You can instead load the default database
//let database = Default::default();
let cookie = cookie.load(&database)?;
let file = "data/tests/rust-logo-128x128-blk.png";
// Analyze the file
assert_eq!(cookie.file(file)?, "PNG image data, 128 x 128, 8-bit/color RGBA, non-interlaced");
Ok(())
}
有关更多详细信息,请查看 crate rustdoc。
仓库
项目的仓库为 github.com/robo9k/rust-magic
它包含 magic
crate 的最新开发版本(可能尚未发布到 crates.io
),
以及如何使用 magic
crate 的更多 示例
以及 问题 和 讨论。
MSRV
最低支持的 Rust 版本 (MSRV) 是 Rust 1.56 或更高。
此版本可能在将来更改,但将通过 crate 版本升级来完成。
要求
默认情况下,编译 magic
crate 将(通过 magic-sys
crate)在您的系统库路径中搜索 libmagic
的共享库版本以链接。
为此,您需要在一个标准位置安装 libmagic
的开发版本
$ # On Debian based Linux systems:
$ sudo apt-get install libmagic1 libmagic-dev
$ # On macOS:
$ brew install libmagic
$ # On Windows:
$ cargo install cargo-vcpkg
$ cargo vcpkg build
如果您正在进行交叉编译,或者需要更多控制选择哪个库,请参阅 如何构建 magic-sys
。
依赖项
~0.4–1MB
~21K SLoC