5 个版本
0.1.4 | 2023年12月12日 |
---|---|
0.1.3 | 2023年11月9日 |
0.1.2 | 2023年11月8日 |
0.1.1 | 2023年11月8日 |
0.1.0 | 2023年11月8日 |
#1181 在 开发工具
每月 43 次下载
54KB
1.5K SLoC
crate-inspector
检查 Rust 库包的公共 API
示例
获取项
use crate_inspector::CrateBuilder;
let builder = CrateBuilder::default()
.toolchain("nightly")
.manifest_path("Cargo.toml");
let krate = builder.build().unwrap();
for item in krate.items() {
println!("item: {:?}", item.name);
}
for strc in krate.structs() {
println!("struct: {}", strc.name());
println!("#impls: {}", strc.impls().count());
}
for enm in krate.enums() {
println!("enum: {}", enm.name());
println!("variants: {:?}", enm.variants().collect::<Vec<_>>());
println!("#methods: {}", enm.impls().fold(0, |acc, i| acc + i.functions().count()));
}
for sub in krate.sub_modules() {
println!("submodule: {}", sub.name());
}
if let Some(foo) = krate.get_item("foo") {
println!("id: {:?}", foo.id);
}
向下转型
use crate_inspector::{CrateBuilder, StructItem};
let builder = CrateBuilder::default()
.toolchain("nightly")
.manifest_path("Cargo.toml");
let krate = builder.build().unwrap();
for item in krate.items() {
if let Some(strc) = krate.downcast::<StructItem>(item) {
println!("struct: {}", strc.name());
}
}
许可证
本项目可根据您的要求在以下许可证下使用:[Apache License, Version 2.0](https://github.com/mtshiba/crate-inspector/blob/2f51ea3f809cb774e413a36371d37fb82e0db600/LICENSE-APACHE) 或 [MIT 许可证](https://github.com/mtshiba/crate-inspector/blob/2f51ea3f809cb774e413a36371d37fb82e0db600/LICENSE-MIT)。
依赖项
~2–2.9MB
~56K SLoC