Linguist
Github's Linguist for Rust
Install / Use
/learn @drshade/LinguistREADME
Linguist
A Rust library for programming language detection, inspired by GitHub Linguist. Detects programming languages by file extension, filename, and content-based heuristics.
Features
- Zero configuration and setup required, just add the crate and call the detection functions
- Detect languages by exact filename match (e.g.,
Makefile,Dockerfile) - Detect languages by file extension (e.g.,
.rs,.py,.js) - Disambiguate between multiple languages using content heuristics
- Identify vendored/third-party files
Usage
Detect by Extension
use linguist::detect_language_by_extension;
let languages = detect_language_by_extension("script.py")?;
assert_eq!(languages[0].name, "Python");
Detect by Filename
use linguist::detect_language_by_filename;
let languages = detect_language_by_filename("Makefile")?;
assert_eq!(languages[0].name, "Makefile");
Disambiguate by Content
use linguist::disambiguate;
let content = "#include <iostream>\nint main() {}";
let result = disambiguate("test.h", content)?;
if let Some(languages) = result {
assert_eq!(languages[0].name, "C++");
}
Check if Vendored
use linguist::is_vendored;
assert!(is_vendored("node_modules/react/index.js")?);
assert!(!is_vendored("src/main.rs")?);
Acknowledgments
Special thanks to @vcfxb for graciously donating the crates.io name "linguist" to this project!
This project is inspired by and uses language definitions from GitHub Linguist, maintained by GitHub and its contributors. The language definitions (definitions/languages.yml, definitions/heuristics.yml, definitions/vendor.yml) are derived from this project.
Related Skills
node-connect
345.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
104.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
