asteroidsfactory 0.0.3

Asteroid factory — classify, build and catalogue asteroids of any type: near-Earth, main belt, trojan, centaur, binary, rubble pile, metallic, and potentially hazardous.
Documentation
use crate::types::GeneratedAsteroid;

pub fn summary_line(asteroid: &GeneratedAsteroid) -> String {
    match asteroid {
        GeneratedAsteroid::NearEarth(a) => {
            format!(
                "NEA: r={:.0}m, a={:.3}AU, e={:.3}",
                a.radius, a.semi_major_axis, a.eccentricity
            )
        }
        GeneratedAsteroid::MainBelt(a) => {
            format!(
                "MainBelt: r={:.0}m, a={:.3}AU, type={:?}",
                a.radius, a.semi_major_axis, a.spectral_type
            )
        }
        GeneratedAsteroid::Trojan(a) => {
            format!(
                "Trojan: r={:.0}m, point={:?}, a_host={:.3}AU",
                a.radius, a.lagrange_point, a.host_semi_major_au
            )
        }
        GeneratedAsteroid::Centaur(a) => {
            format!(
                "Centaur: r={:.0}m, a={:.3}AU, e={:.3}",
                a.radius, a.semi_major_axis, a.eccentricity
            )
        }
        GeneratedAsteroid::Binary(a) => {
            format!(
                "Binary: r1={:.0}m, r2={:.0}m, sep={:.0}m",
                a.radius_primary, a.radius_secondary, a.separation
            )
        }
        GeneratedAsteroid::RubblePile(a) => {
            format!(
                "RubblePile: r={:.0}m, porosity={:.1}%",
                a.effective_radius,
                a.porosity * 100.0
            )
        }
        GeneratedAsteroid::Metallic(a) => {
            format!(
                "Metallic: r={:.0}m, Fe={:.1}%",
                a.radius,
                a.iron_fraction * 100.0
            )
        }
        GeneratedAsteroid::PHA(a) => {
            format!(
                "PHA: r={:.0}m, MOID={:.4}AU, H={:.1}",
                a.radius, a.moid, a.absolute_mag
            )
        }
    }
}