fn fmt()

in internal-tools/cargo-compare/src/diff.rs [113:192]


    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self.a.diff(&self.b) {
            edit::Edit::Change(diff) => {
                for (pkg_id, diff) in diff {
                    use diffus::edit::map::Edit;

                    let package = self.graph.metadata(pkg_id).expect("valid package ID");
                    match diff {
                        Edit::Copy(features) => {
                            if self.verbose {
                                writeln!(
                                    f,
                                    "{} {}: unchanged\n  * features: {}",
                                    package.name(),
                                    package.version(),
                                    features.iter().join(", ")
                                )?
                            }
                        }
                        Edit::Insert(features) => writeln!(
                            f,
                            "{} {}: added\n  * new features: {}",
                            package.name(),
                            package.version(),
                            features.iter().join(", ")
                        )?,
                        Edit::Remove(features) => writeln!(
                            f,
                            "{} {}: removed\n  * old features: {}",
                            package.name(),
                            package.version(),
                            features.iter().join(", "),
                        )?,
                        Edit::Change(diff) => {
                            writeln!(
                                f,
                                "{} {}: changed, features:",
                                package.name(),
                                package.version(),
                            )?;
                            for (feature_name, diff) in diff {
                                use diffus::edit::set::Edit;

                                match diff {
                                    Edit::Copy(_) => {
                                        if self.verbose {
                                            writeln!(f, "  * {}: unchanged", feature_name)?
                                        }
                                    }
                                    Edit::Insert(_) => {
                                        writeln!(f, "  * {}: added", feature_name)?;
                                    }
                                    Edit::Remove(_) => {
                                        writeln!(f, "  * {}: removed", feature_name)?;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            edit::Edit::Copy(map) => {
                if self.verbose {
                    for (pkg_id, features) in map {
                        let package = self.graph.metadata(pkg_id).expect("valid package ID");

                        writeln!(
                            f,
                            "{} {}: unchanged\n  * features: {}",
                            package.name(),
                            package.version(),
                            features.iter().join(", ")
                        )?;
                    }
                }
            }
        }

        Ok(())
    }