fn fmt()

in guppy-summaries/src/report.rs [88:185]


    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        for (summary_id, status) in self.sorted {
            write!(
                f,
                "  {} {} {} ({}, {})",
                status.tag(),
                summary_id.name,
                summary_id.version,
                status.latest_status(),
                summary_id.source
            )?;

            // Print out other versions if available.
            if let Some(unchanged_list) = self.package_diff.unchanged.get(summary_id.name.as_str())
            {
                write!(f, " (other versions: ")?;
                display_list(f, unchanged_list.iter().map(|(version, _, _)| *version))?;
                write!(f, ")")?;
            }

            writeln!(f)?;

            match status {
                SummaryDiffStatus::Added { info } => {
                    write!(f, "    * features: ")?;
                    display_list(f, &info.features)?;
                    writeln!(f)?;
                }
                SummaryDiffStatus::Removed { old_info } => {
                    write!(f, "    * (old features: ")?;
                    display_list(f, &old_info.features)?;
                    writeln!(f, ")")?;
                }
                SummaryDiffStatus::Modified {
                    old_version,
                    old_source,
                    old_status,
                    // The new status is printed in the package header.
                    new_status: _,
                    added_features,
                    removed_features,
                    unchanged_features,
                    added_optional_deps,
                    removed_optional_deps,
                    unchanged_optional_deps,
                } => {
                    if let Some(old_version) = old_version {
                        let change_str = if summary_id.version > **old_version {
                            "upgraded"
                        } else {
                            "DOWNGRADED"
                        };
                        writeln!(f, "    * version {} from {}", change_str, old_version)?;
                    }
                    if let Some(old_source) = old_source {
                        writeln!(f, "    * source changed from {}", old_source)?;
                    }
                    if let Some(old_status) = old_status {
                        writeln!(f, "    * status changed from {}", old_status)?;
                    }

                    // ---

                    if !added_features.is_empty() {
                        write!(f, "    * added features: ")?;
                        display_list(f, added_features.iter().copied())?;
                        writeln!(f)?;
                    }
                    if !removed_features.is_empty() {
                        write!(f, "    * removed features: ")?;
                        display_list(f, removed_features.iter().copied())?;
                        writeln!(f)?;
                    }
                    write!(f, "    * (unchanged features: ")?;
                    display_list(f, unchanged_features.iter().copied())?;
                    writeln!(f, ")")?;

                    // ---

                    if !added_optional_deps.is_empty() {
                        write!(f, "    * added optional dependencies: ")?;
                        display_list(f, added_optional_deps.iter().copied())?;
                        writeln!(f)?;
                    }
                    if !removed_optional_deps.is_empty() {
                        write!(f, "    * removed optional dependencies: ")?;
                        display_list(f, removed_optional_deps.iter().copied())?;
                        writeln!(f)?;
                    }
                    write!(f, "    * (unchanged optional dependencies: ")?;
                    display_list(f, unchanged_optional_deps.iter().copied())?;
                    writeln!(f, ")")?;
                }
            }
        }

        Ok(())
    }