Library API
Note
The library API is currently in early development with placeholder functionality. This documentation describes the planned interface.
The libmagic-rs library provides a safe, efficient API for file type identification in Rust applications.
Core Types
MagicDatabase
The main interface for loading and using magic rules:
#![allow(unused)]
fn main() {
pub struct MagicDatabase {
// Internal implementation
}
impl MagicDatabase {
pub fn load_from_file<P: AsRef<Path>>(path: P) -> Result<Self>;
pub fn evaluate_file<P: AsRef<Path>>(&self, path: P) -> Result<EvaluationResult>;
}
}
EvaluationResult
Contains the results of file type identification:
#![allow(unused)]
fn main() {
pub struct EvaluationResult {
pub description: String,
pub mime_type: Option<String>,
pub confidence: f64,
}
}
EvaluationConfig
Configuration options for rule evaluation:
#![allow(unused)]
fn main() {
pub struct EvaluationConfig {
pub max_recursion_depth: u32,
pub max_string_length: usize,
pub stop_at_first_match: bool,
}
}
Basic Usage
#![allow(unused)]
fn main() {
use libmagic_rs::{MagicDatabase, EvaluationConfig};
// Load magic database
let db = MagicDatabase::load_from_file("magic.db")?;
// Evaluate a file
let result = db.evaluate_file("example.bin")?;
println!("File type: {}", result.description);
if let Some(mime) = result.mime_type {
println!("MIME type: {}", mime);
}
}
Error Handling
All operations return Result types with descriptive errors:
#![allow(unused)]
fn main() {
use libmagic_rs::LibmagicError;
match db.evaluate_file("missing.bin") {
Ok(result) => println!("Type: {}", result.description),
Err(LibmagicError::IoError(e)) => eprintln!("File error: {}", e),
Err(LibmagicError::EvaluationError(e)) => eprintln!("Evaluation error: {}", e),
Err(e) => eprintln!("Other error: {}", e),
}
}
Advanced Usage
Coming soon with full implementation.