rust-magic Build Status

libmagic bindings for Rust.


libmagic(3) is the backend of the file(1) command, which classifies files, e.g.:

sh $ file assets/rust-logo-128x128-blk.png assets/rust-logo-128x128-blk.png: PNG image data, 128 x 128, 8-bit/color RGBA, non-interlaced

This project provides libmagic Rust bindings (NOT the file command from the example). Documentation is rust-magic on Rust CI and $ man 3 libmagic.

Usage

Create a new cargo project (or edit your existing one):

sh $ cargo new --bin magic-usage && cd magic-usage/ $ $EDITOR Cargo.toml $ $EDITOR src/main.rs

Add a dependency to your Cargo.toml (see cargo doc):

toml [dependencies.magic] version = "0.3.0"

Then use the magic crate like this (in your src/main.rs):

```rust extern crate magic; use magic::{Cookie, flags};

fn main() { let cookie = Cookie::open(flags::NONE).ok().unwrap(); cookie.load(&Path::new("/usr/share/misc/magic")); println!("It's a kind of magic: {}", cookie.file(&Path::new("assets/rust-logo-128x128-blk.png")).ok().unwrap()); } ```

And for this example, build and run it:

sh $ cargo run Running `target/magic-usage` It's a kind of magic: PNG image data, 128 x 128, 8-bit/color RGBA, non-interlaced