#magic #bindings #file #ffi

sys no-std magic-sys

libmagic C库的声明

15个版本

使用旧Rust 2015

0.3.0 2022年8月18日
0.3.0-alpha.32021年11月7日
0.3.0-alpha.12021年10月22日
0.2.1 2020年9月7日
0.0.6 2014年12月21日

209无标准库 中排名 #209

Download history 3426/week @ 2024-03-13 3484/week @ 2024-03-20 2640/week @ 2024-03-27 4241/week @ 2024-04-03 2517/week @ 2024-04-10 3439/week @ 2024-04-17 4447/week @ 2024-04-24 2346/week @ 2024-05-01 2404/week @ 2024-05-08 3134/week @ 2024-05-15 2173/week @ 2024-05-22 3199/week @ 2024-05-29 3320/week @ 2024-06-05 2288/week @ 2024-06-12 1911/week @ 2024-06-19 1372/week @ 2024-06-26

9,452 每月下载量
用于 10 个crate (直接使用 2 个)

MIT/Apache

20KB
336 代码行

rust-magic-sys linux构建状态 windows构建状态 mac构建状态

Rustlibmagic 的声明。


这个 cargo -sys 包 为例如 magic 绑定 提供了 libmagic 声明。

使用方法

magic-sys 在crates.io上可用,因此您可以使用如下方式(在您的 Cargo.toml 中)

[dependencies]
magic-sys = "0.3"

rustdoc 可在 docs.rs 上找到。

要求

此crate需要版本为5的 libmagic C库。

您需要通过激活匹配的 magic-sys 功能来指定您的 libmagic 版本。
每个API版本都有一个crate功能,例如 "v5-38"(v5.38也是默认版本),见 Cargo.toml
如果您使用的是不同的 libmagic 版本,请调整您的配置

[dependencies.magic-sys]
version = "0.3"
default-features = false
features = ["v5-41"]

请注意,这些版本功能是累加的,因此 "v5-41" 包含 "v5-40" 和其他先前版本。

libmagic 需要安装在一个标准位置(也请参阅 问题 #1)。

在基于Debian的Linux系统上,可以通过以下方式实现

sudo apt-get install libmagic1 libmagic-dev

在RHEL/Cent OS、Gentoo和其他操作系统上,您需要安装file包。

在Mac OS X上,您可以使用Homebrew

brew install libmagic

感谢对Windows的支持反馈(问题#2)!

您可以通过vcpkgvcpkg-rs以及cargo-vcpkg使用微软的vcpkg。如果您选择后者,这意味着您将需要

cargo install cargo-vcpkg
cargo vcpkg build

之后,您可以像往常一样使用cargo build等命令构建您的crate。

MSRV

最低支持Rust版本(MSRV)为Rust 1.38或更高。

此版本可能在未来发生变化,但将会通过crate版本升级来完成。

构建

默认情况下,libmagic将在系统库路径中搜索。如果您需要使用不同的库或进行交叉编译,您可以设置MAGIC_DIRMAGIC_STATIC环境变量。

MAGIC_DIR<TARGET>_MAGIC_DIR

告诉rustc在哪里找到libmagic.so / libmagic.a。可以有一个针对特定目标的词缀,例如X86_64_UNKNOWN_LINUX_MUSL_MAGIC_DIR

MAGIC_STATIC<TARGET>_MAGIC_STATIC

控制与libmagic的静态链接。如果(提供的)搜索路径中只有一个libmagic.a或者在显式启用的情况下(如MAGIC_STATIC=true),则会自动启用。可以有一个针对特定目标的词缀,例如X86_64_UNKNOWN_LINUX_MUSL_MAGIC_STATIC

类似地,可以使用MAGIC_STATIC=false来选择动态链接libmagic。如果未设置但两个库都可用,构建将因错误而中断,并且您必须显式设置一个选项。

vcpkg

可选的vcpkg集成有其自己的环境变量集,请参阅vcpkg crate文档。如果您不使用cargo vcpkg build,您将必须

  • 使用vcpkg install libmagic并设置您的vcpkg根目录的环境变量
  • 使用vcpkg integrate install安装您的vcpkg根用户

许可

根据您的选择,许可协议为以下之一

贡献

除非您明确声明,否则您根据Apache-2.0许可证定义的任何有意提交以包含在工作中的贡献,应按上述方式双重授权,不附加任何额外条款或条件。

依赖项

~64KB