pub struct StructItem<'a> { /* private fields */ }
Implementations§
Source§impl<'a> StructItem<'a>
impl<'a> StructItem<'a>
Sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
Examples found in repository?
examples/downcast.rs (line 11)
1fn main() {
2 use crate_inspector::{CrateBuilder, StructItem};
3
4 let builder = CrateBuilder::default()
5 .toolchain("nightly")
6 .manifest_path("Cargo.toml");
7 let krate = builder.build().unwrap();
8
9 for item in krate.items() {
10 if let Some(strc) = krate.downcast::<StructItem>(item) {
11 println!("struct: {}", strc.name());
12 }
13 }
14}
More examples
examples/items.rs (line 13)
1fn main() {
2 use crate_inspector::CrateBuilder;
3
4 let builder = CrateBuilder::default()
5 .toolchain("nightly")
6 .manifest_path("Cargo.toml");
7 let krate = builder.build().unwrap();
8
9 for item in krate.items() {
10 println!("item: {:?}", item.name);
11 }
12 for strc in krate.structs() {
13 println!("struct: {}", strc.name());
14 println!("#impls: {}", strc.impls().count());
15 }
16 for enm in krate.enums() {
17 println!("enum: {}", enm.name());
18 println!("variants: {:?}", enm.variants().collect::<Vec<_>>());
19 println!(
20 "#methods: {}",
21 enm.impls().fold(0, |acc, i| acc + i.functions().count())
22 );
23 }
24 for sub in krate.sub_modules() {
25 println!("submodule: {}", sub.name());
26 }
27 if let Some(item) = krate.get_item("format") {
28 println!("item: {:?}", item.id);
29 }
30}
pub fn field_ids(&self) -> Option<impl Iterator<Item = &Id>>
pub fn fields(&self) -> Option<impl Iterator<Item = FieldItem<'_>>>
Sourcepub fn impls(&self) -> impl Iterator<Item = ImplItem<'_>>
pub fn impls(&self) -> impl Iterator<Item = ImplItem<'_>>
Examples found in repository?
examples/items.rs (line 14)
1fn main() {
2 use crate_inspector::CrateBuilder;
3
4 let builder = CrateBuilder::default()
5 .toolchain("nightly")
6 .manifest_path("Cargo.toml");
7 let krate = builder.build().unwrap();
8
9 for item in krate.items() {
10 println!("item: {:?}", item.name);
11 }
12 for strc in krate.structs() {
13 println!("struct: {}", strc.name());
14 println!("#impls: {}", strc.impls().count());
15 }
16 for enm in krate.enums() {
17 println!("enum: {}", enm.name());
18 println!("variants: {:?}", enm.variants().collect::<Vec<_>>());
19 println!(
20 "#methods: {}",
21 enm.impls().fold(0, |acc, i| acc + i.functions().count())
22 );
23 }
24 for sub in krate.sub_modules() {
25 println!("submodule: {}", sub.name());
26 }
27 if let Some(item) = krate.get_item("format") {
28 println!("item: {:?}", item.id);
29 }
30}
Sourcepub fn trait_impls(&self) -> impl Iterator<Item = ImplItem<'_>>
pub fn trait_impls(&self) -> impl Iterator<Item = ImplItem<'_>>
Iterate over struct impls that are trait impls (impl <Trait> for <Struct> { ... }
).
These may include auto/blanket impls.
Sourcepub fn blanket_impls(&self) -> impl Iterator<Item = ImplItem<'_>>
pub fn blanket_impls(&self) -> impl Iterator<Item = ImplItem<'_>>
Iterate over struct blanket impls (impl<T: ...> <Trait> for <Struct<T>> { ... }
).
Sourcepub fn non_blanket_impls(&self) -> impl Iterator<Item = ImplItem<'_>>
pub fn non_blanket_impls(&self) -> impl Iterator<Item = ImplItem<'_>>
Iterate over struct non-blanket impls (impl <Trait> for <Struct> { ... }
).
Sourcepub fn associated_impls(&self) -> impl Iterator<Item = ImplItem<'_>>
pub fn associated_impls(&self) -> impl Iterator<Item = ImplItem<'_>>
Iterator over struct impls that are not trait impls.
Trait Implementations§
Source§impl<'a> Clone for StructItem<'a>
impl<'a> Clone for StructItem<'a>
Source§fn clone(&self) -> StructItem<'a>
fn clone(&self) -> StructItem<'a>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<'a> CrateItem<'a> for StructItem<'a>
impl<'a> CrateItem<'a> for StructItem<'a>
type Inner = Struct
fn downcast(inner: &'a ItemEnum) -> Option<&'a Self::Inner>
fn new(krate: &'a Crate, item: &'a Item, struct_: &'a Self::Inner) -> Self
fn item(&self) -> &'a Item
fn inner(&self) -> &'a Self::Inner
fn krate(&self) -> &'a Crate
fn is_public(&self) -> bool
fn is_crate_item(&self) -> bool
fn is_root_item(&self) -> bool
fn is_external_item(&self) -> bool
fn id(&'a self) -> &'a Id
fn module(&self) -> Option<ModuleItem<'a>>
Source§impl<'a> Debug for StructItem<'a>
impl<'a> Debug for StructItem<'a>
Source§impl<'a> PartialEq for StructItem<'a>
impl<'a> PartialEq for StructItem<'a>
impl<'a> Copy for StructItem<'a>
impl<'a> Eq for StructItem<'a>
impl<'a> StructuralPartialEq for StructItem<'a>
Auto Trait Implementations§
impl<'a> Freeze for StructItem<'a>
impl<'a> RefUnwindSafe for StructItem<'a>
impl<'a> Send for StructItem<'a>
impl<'a> Sync for StructItem<'a>
impl<'a> Unpin for StructItem<'a>
impl<'a> UnwindSafe for StructItem<'a>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.