#![allow(clippy::wildcard_imports, clippy::enum_glob_use)]
#![allow(
clippy::cast_precision_loss,
clippy::cast_possible_truncation,
clippy::cast_sign_loss
)]
use super::*;
impl Npm for RustCode {
fn compute<'a>(node: &Node<'a>, _code: &'a [u8], stats: &mut Stats) {
use Rust::*;
if matches!(node.kind_id().into(), ImplItem | TraitItem) && stats.is_disabled() {
stats.is_class_space = true;
}
if !matches!(node.kind_id().into(), FunctionItem | FunctionSignatureItem) {
return;
}
let Some(parent) = node.parent() else {
return;
};
if !matches!(parent.kind_id().into(), DeclarationList) {
return;
}
let Some(grand) = parent.parent() else {
return;
};
match grand.kind_id().into() {
ImplItem => {
stats.class_nm += 1;
if super::npa::rust_item_is_public(node) {
stats.class_npm += 1;
}
}
TraitItem => {
stats.interface_nm += 1;
stats.interface_npm = stats.interface_nm;
}
_ => {}
}
}
}