cargo-udeps 0.1.14

Find unused dependencies in Cargo.toml
Documentation
use std::cmp::Ordering;

use serde::Deserialize;

#[derive(Deserialize, Debug, Hash, PartialEq, Eq, Copy, Clone)]
pub struct CrateDisambiguator(pub u64, pub u64);

#[derive(Deserialize, Debug)]
pub struct CrateId {
	pub name :String,
	pub disambiguator :CrateDisambiguator,
}

#[derive(Deserialize, Debug, Hash, PartialEq, Eq, Copy, Clone)]
pub struct ItemId<KrateId> {
	pub krate :KrateId,
	pub index :u32,
}

#[derive(Deserialize, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct Span {
	pub file_name :String,
	pub line_start :u32,
	pub line_end :u32,
	pub column_start :u32,
	pub column_end :u32,
}

#[derive(Deserialize, Debug)]
pub struct ExternalCrate {
	pub num :u32,
	pub id :CrateId,
}

#[derive(Deserialize, Debug)]
pub struct Prelude {
	pub crate_id :CrateId,
	pub external_crates :Vec<ExternalCrate>,
}

#[derive(Deserialize, Debug, PartialEq, Eq)]
pub struct Def<KrateId> {
	pub kind :String,
	pub name :String,
	pub id :ItemId<KrateId>,
	pub span :Span,
	pub parent :Option<ItemId<KrateId>>,
	pub decl_id :Option<ItemId<KrateId>>,
}


impl<Id :Eq> Ord for Def<Id> {
	fn cmp(&self, other :&Self) -> Ordering {
		(&self.span, &self.name).cmp(&(&other.span, &other.name))
	}
}

impl<Id :Eq> PartialOrd for Def<Id> {
	fn partial_cmp(&self, other :&Self) -> Option<Ordering> {
		Some(self.cmp(other))
	}
}

#[derive(Deserialize, Debug)]
pub struct Ref<KrateId> {
	pub kind :String,
	pub ref_id :ItemId<KrateId>,
	pub span :Span,
}

#[derive(Deserialize, Debug)]
pub struct Compilation {
	pub directory :String,
}

#[derive(Deserialize, Debug)]
pub struct CrateSaveAnalysis {
	pub compilation :Compilation,
	pub prelude :Prelude,
	pub defs :Vec<Def<u32>>,
	pub refs :Vec<Ref<u32>>,
}

#[derive(Deserialize, Debug)]
pub struct CrateSaveAnalysisMetadata {
	pub compilation :Compilation,
	pub prelude :Prelude,
}