Struct crate_inspector::Crate
source · pub struct Crate(/* private fields */);
Implementations§
source§impl Crate
impl Crate
sourcepub fn all_items(&self) -> impl Iterator<Item = &Item>
pub fn all_items(&self) -> impl Iterator<Item = &Item>
All items in the crate, including external items referenced locally.
sourcepub fn items(&self) -> impl Iterator<Item = &Item>
pub fn items(&self) -> impl Iterator<Item = &Item>
Items in the crate, excluding external items referenced locally.
Examples found in repository?
1 2 3 4 5 6 7 8 9 10 11 12 13 14
fn main() {
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());
}
}
}
More examples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
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(item) = krate.get_item("format") {
println!("item: {:?}", item.id);
}
}
pub fn krate(&self) -> &Crate
pub fn item_summary(&self) -> impl Iterator<Item = &ItemSummary>
sourcepub fn downcast<'a, T: CrateItem<'a> + 'a>(
&'a self,
item: &'a Item
) -> Option<T>
pub fn downcast<'a, T: CrateItem<'a> + 'a>( &'a self, item: &'a Item ) -> Option<T>
Downcast an item to a specific type T: CrateItem
.
Examples found in repository?
1 2 3 4 5 6 7 8 9 10 11 12 13 14
fn main() {
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());
}
}
}
pub fn all_modules(&self) -> impl Iterator<Item = ModuleItem<'_>>
sourcepub fn modules(&self) -> impl Iterator<Item = ModuleItem<'_>>
pub fn modules(&self) -> impl Iterator<Item = ModuleItem<'_>>
root module included
sourcepub fn sub_modules(&self) -> impl Iterator<Item = ModuleItem<'_>>
pub fn sub_modules(&self) -> impl Iterator<Item = ModuleItem<'_>>
root module not included
submodules of submodules not included
Examples found in repository?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
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(item) = krate.get_item("format") {
println!("item: {:?}", item.id);
}
}
sourcepub fn all_functions(&self) -> impl Iterator<Item = FunctionItem<'_>>
pub fn all_functions(&self) -> impl Iterator<Item = FunctionItem<'_>>
Enumerates all functions including submodules. methods & associated functions & function declarations included
sourcepub fn functions(&self) -> impl Iterator<Item = FunctionItem<'_>>
pub fn functions(&self) -> impl Iterator<Item = FunctionItem<'_>>
Enumerates root module functions. methods & associated functions & function declarations not included
sourcepub fn all_constants(&self) -> impl Iterator<Item = ConstantItem<'_>>
pub fn all_constants(&self) -> impl Iterator<Item = ConstantItem<'_>>
Enumerates all constants including submodules
sourcepub fn constants(&self) -> impl Iterator<Item = ConstantItem<'_>>
pub fn constants(&self) -> impl Iterator<Item = ConstantItem<'_>>
Enumerates root module constants
sourcepub fn all_statics(&self) -> impl Iterator<Item = StaticItem<'_>>
pub fn all_statics(&self) -> impl Iterator<Item = StaticItem<'_>>
Enumerates all statics including submodules
sourcepub fn statics(&self) -> impl Iterator<Item = StaticItem<'_>>
pub fn statics(&self) -> impl Iterator<Item = StaticItem<'_>>
Enumerates root module statics
sourcepub fn all_structs(&self) -> impl Iterator<Item = StructItem<'_>>
pub fn all_structs(&self) -> impl Iterator<Item = StructItem<'_>>
Enumerates all structs including submodules
sourcepub fn structs(&self) -> impl Iterator<Item = StructItem<'_>>
pub fn structs(&self) -> impl Iterator<Item = StructItem<'_>>
Enumerates root module structs
Examples found in repository?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
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(item) = krate.get_item("format") {
println!("item: {:?}", item.id);
}
}
sourcepub fn all_traits(&self) -> impl Iterator<Item = TraitItem<'_>>
pub fn all_traits(&self) -> impl Iterator<Item = TraitItem<'_>>
Enumerates all traits including submodules
sourcepub fn all_enums(&self) -> impl Iterator<Item = EnumItem<'_>>
pub fn all_enums(&self) -> impl Iterator<Item = EnumItem<'_>>
Enumerates all enums including submodules
sourcepub fn enums(&self) -> impl Iterator<Item = EnumItem<'_>>
pub fn enums(&self) -> impl Iterator<Item = EnumItem<'_>>
Enumerates root module enums
Examples found in repository?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
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(item) = krate.get_item("format") {
println!("item: {:?}", item.id);
}
}
pub fn all_type_aliases(&self) -> impl Iterator<Item = TypeAliasItem<'_>>
pub fn type_aliases(&self) -> impl Iterator<Item = TypeAliasItem<'_>>
pub fn all_trait_aliases(&self) -> impl Iterator<Item = TraitAliasItem<'_>>
pub fn trait_aliases(&self) -> impl Iterator<Item = TraitAliasItem<'_>>
pub fn all_opaque_tys(&self) -> impl Iterator<Item = OpaqueTyItem<'_>>
pub fn opaque_tys(&self) -> impl Iterator<Item = OpaqueTyItem<'_>>
pub fn all_unions(&self) -> impl Iterator<Item = UnionItem<'_>>
pub fn unions(&self) -> impl Iterator<Item = UnionItem<'_>>
sourcepub fn all_impls(&self) -> impl Iterator<Item = ImplItem<'_>>
pub fn all_impls(&self) -> impl Iterator<Item = ImplItem<'_>>
Enumerates all referenced impls including submodules, std
sourcepub fn all_macros(&self) -> impl Iterator<Item = MacroItem<'_>>
pub fn all_macros(&self) -> impl Iterator<Item = MacroItem<'_>>
Enumerates all macros including submodules
sourcepub fn all_imports(&self) -> impl Iterator<Item = ImportItem<'_>>
pub fn all_imports(&self) -> impl Iterator<Item = ImportItem<'_>>
Enumerates all imports including submodules
sourcepub fn imports(&self) -> impl Iterator<Item = ImportItem<'_>>
pub fn imports(&self) -> impl Iterator<Item = ImportItem<'_>>
Enumerates root module imports
sourcepub fn get_item(&self, name: &str) -> Option<&Item>
pub fn get_item(&self, name: &str) -> Option<&Item>
Get an item by its name.
Examples found in repository?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
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(item) = krate.get_item("format") {
println!("item: {:?}", item.id);
}
}
sourcepub fn get_constant(&self, name: &str) -> Option<ConstantItem<'_>>
pub fn get_constant(&self, name: &str) -> Option<ConstantItem<'_>>
Get a constant by its name.
sourcepub fn get_function(&self, name: &str) -> Option<FunctionItem<'_>>
pub fn get_function(&self, name: &str) -> Option<FunctionItem<'_>>
Get a function by its name.
sourcepub fn get_struct(&self, name: &str) -> Option<StructItem<'_>>
pub fn get_struct(&self, name: &str) -> Option<StructItem<'_>>
Get a struct by its name.
sourcepub fn get_type_alias(&self, name: &str) -> Option<TypeAliasItem<'_>>
pub fn get_type_alias(&self, name: &str) -> Option<TypeAliasItem<'_>>
Get a type alias by its name.
sourcepub fn get_trait_alias(&self, name: &str) -> Option<TraitAliasItem<'_>>
pub fn get_trait_alias(&self, name: &str) -> Option<TraitAliasItem<'_>>
Get a trait alias by its name.
sourcepub fn get_opaque_ty(&self, name: &str) -> Option<OpaqueTyItem<'_>>
pub fn get_opaque_ty(&self, name: &str) -> Option<OpaqueTyItem<'_>>
Get an opaque type by its name.
sourcepub fn get_module(&self, name: &str) -> Option<ModuleItem<'_>>
pub fn get_module(&self, name: &str) -> Option<ModuleItem<'_>>
Get a module by its name.
Trait Implementations§
source§impl PartialEq for Crate
impl PartialEq for Crate
impl Eq for Crate
impl StructuralEq for Crate
impl StructuralPartialEq for Crate
Auto Trait Implementations§
impl RefUnwindSafe for Crate
impl Send for Crate
impl Sync for Crate
impl Unpin for Crate
impl UnwindSafe for Crate
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.