nbt-sniffer 0.2.0

A command-line tool designed to scan Minecraft Java Edition world data.
Documentation
use serde::Serialize;
use std::collections::HashMap;

use crate::DataType;

#[derive(Serialize, Clone)]
pub struct ReportItemDetailed {
    pub count: u64,
    pub id: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub nbt: Option<String>,
}

#[derive(Serialize, Clone)]
pub struct ReportItemId {
    pub count: u64,
    pub id: String,
}

#[derive(Serialize, Clone)]
pub struct ReportItemNbt {
    pub count: u64,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub nbt: Option<String>,
}

#[derive(Serialize)]
pub struct Report<TItem: Serialize> {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub per_dimension_summary: Option<HashMap<String, Vec<TItem>>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub per_data_type_summary: Option<HashMap<DataType, Vec<TItem>>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub per_dimension_detail: Option<HashMap<String, HashMap<DataType, Vec<TItem>>>>,
    #[serde(skip_serializing_if = "Vec::is_empty")]
    pub grand_total: Vec<TItem>,
    pub grand_total_count: u64,
}