30 个版本 (15 个重大变更)

0.16.2 2023 年 10 月 5 日
0.16.0 2023 年 9 月 30 日
0.13.0 2022 年 8 月 18 日
0.13.0-alpha.32021 年 11 月 7 日
0.2.0 2014 年 11 月 20 日

#4 in #file-extension

Download history 2485/week @ 2024-04-14 3716/week @ 2024-04-21 3451/week @ 2024-04-28 1944/week @ 2024-05-05 2853/week @ 2024-05-12 2227/week @ 2024-05-19 2558/week @ 2024-05-26 3523/week @ 2024-06-02 2805/week @ 2024-06-09 2237/week @ 2024-06-16 1214/week @ 2024-06-23 2183/week @ 2024-06-30 2383/week @ 2024-07-07 1745/week @ 2024-07-14 3346/week @ 2024-07-21 5716/week @ 2024-07-28

每月 13,350 次下载
用于 9 个 Crates (8 直接使用)

MIT/Apache

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