diff --git a/src/cosmic/bodies.rs b/src/cosmic/bodies.rs index e3fd6769..bef1abf2 100644 --- a/src/cosmic/bodies.rs +++ b/src/cosmic/bodies.rs @@ -88,28 +88,30 @@ impl Bodies { } } +fn avail() -> Vec { + vec![ + "SSB".to_string(), + "Sun".to_string(), + "MercuryBarycenter".to_string(), + "Mercury".to_string(), + "VenusBarycenter".to_string(), + "Venus".to_string(), + "EarthBarycenter".to_string(), + "Earth".to_string(), + "Luna".to_string(), + "MarsBarycenter".to_string(), + "JupiterBarycenter".to_string(), + "SaturnBarycenter".to_string(), + "UranusBarycenter".to_string(), + "NeptuneBarycenter".to_string(), + "PlutoBarycenter".to_string(), + ] +} + impl TryFrom for Bodies { type Error = NyxError; fn try_from(name: String) -> Result { - let avail = vec![ - "SSB".to_string(), - "Sun".to_string(), - "MercuryBarycenter".to_string(), - "Mercury".to_string(), - "VenusBarycenter".to_string(), - "Venus".to_string(), - "EarthBarycenter".to_string(), - "Earth".to_string(), - "Luna".to_string(), - "MarsBarycenter".to_string(), - "JupiterBarycenter".to_string(), - "SaturnBarycenter".to_string(), - "UranusBarycenter".to_string(), - "NeptuneBarycenter".to_string(), - "PlutoBarycenter".to_string(), - ]; - match name.to_lowercase().as_str() { "solar system barycenter" | "ssb" => Ok(Self::SSB), "sun" => Ok(Self::Sun), @@ -126,7 +128,7 @@ impl TryFrom for Bodies { "pluto" | "pluto barycenter" => Ok(Self::PlutoBarycenter), _ => Err(NyxError::ObjectNotFound { needle: name, - haystack: avail, + haystack: avail(), }), } } @@ -136,24 +138,6 @@ impl TryFrom> for Bodies { type Error = NyxError; fn try_from(ephem_path: Vec) -> Result { - let avail = vec![ - "SSB".to_string(), - "Sun".to_string(), - "MercuryBarycenter".to_string(), - "Mercury".to_string(), - "VenusBarycenter".to_string(), - "Venus".to_string(), - "EarthBarycenter".to_string(), - "Earth".to_string(), - "Luna".to_string(), - "MarsBarycenter".to_string(), - "JupiterBarycenter".to_string(), - "SaturnBarycenter".to_string(), - "UranusBarycenter".to_string(), - "NeptuneBarycenter".to_string(), - "PlutoBarycenter".to_string(), - ]; - match ephem_path.len() { 0 => Ok(Self::SSB), 1 => match ephem_path[0] { @@ -169,7 +153,7 @@ impl TryFrom> for Bodies { 9 => Ok(Self::PlutoBarycenter), _ => Err(NyxError::ObjectNotFound { needle: format!("{ephem_path:?}"), - haystack: avail, + haystack: avail(), }), }, 2 if ephem_path[0] == 3 => match ephem_path[1] { @@ -178,12 +162,12 @@ impl TryFrom> for Bodies { 1 => Ok(Self::Luna), _ => Err(NyxError::ObjectNotFound { needle: format!("{ephem_path:?}"), - haystack: avail, + haystack: avail(), }), }, _ => Err(NyxError::ObjectNotFound { needle: format!("{ephem_path:?}"), - haystack: avail, + haystack: avail(), }), } }